grep
の結果をファイルにリダイレクトし、cat
を使用してその内容を画面に表示しています。結果ファイルに何行の結果があるかを知り、それをカウンターに追加したい。
最善の方法は何でしょうか? grep
またはcat
に関連するフラグはありますか?
grep
出力を既にファイルに収集している場合は、次のように番号付きリストを出力できます。
cat -n myfile
行数だけが必要な場合は、次のようにします。
wc -l myfile
する理由は全くありません:
cat myfile | wc -l
...これは、cat
が繰り返さなければならないI/O(wc
)を不必要に行うためです。また、2つのプロセスがあり、1つで十分です。
端末にgrep
を付け、最後に一致の数を出力したい場合は、次のようにします。
grep whatever myfile | tee /dev/tty | wc -l
-c
フラグは仕事をします。例えば:
grep -c ^ filename
grep
によって返される行をカウントします。
man page に記載:
-c、--count通常の出力を抑制します。代わりに、各入力ファイルの一致する行の数を出力します
使用する
your_command | wc -l
マニュアルから:
NAME
wc - print newline, Word, and byte counts for each file
...
-l, --lines
print the newline counts
AWKを使用してファイル内の行を数える
awk 'END {print NR}' filename
Wc -lを使用して行数を取得できます。
例:
$ cat foobar.txt | wc -l
Wcは使用しないでください。行末記号で終了していない場合(少なくともMacでは)、最終行はカウントされません。代わりにこれを使用してください:
nbLines=$(cat -n file.txt | tail -n 1 | cut -f1 | xargs)