私は1つのLinuxコマンドで2つのことをしています。タスクは次のとおりです
ソースファイルのデータを新しいターゲットファイルに送信します。
ソースファイルのレコード数を計算します。
例:ソースファイル:a.txt
、ターゲットファイル:b.txt
cat a.txt > b.txt; cat a.txt | wc -l
上記の例では、a.txt
両方の操作を実行するためにデータを2回取得します。しかし、私のソースファイルは非常に大きいです。したがって、パフォーマンスを向上させるために、ソースファイルからデータを一度だけ抽出し、両方の操作を実行する方法を見つけたいと思います。
どうすればいいですか?
ベストアンサー1
tee
あなたが探しているコマンドは次のとおりです
cat a.txt | tee b.txt | wc -l
また、コメントで提案されているように短くしたい場合は、stdinを完全にcat
使用せずa.txt
に次に直接リダイレクトできます。tee
tee b.txt < a.txt | wc -l
~からマニュアルページ:
tee
- 標準入力から読み込み、標準出力とファイルに書き込み