web-dev-qa-db-ja.com

一般的なツールでファイルの行数をカウントするにはどうすればよいですか?

grepの結果をファイルにリダイレクトし、catを使用してその内容を画面に表示しています。結果ファイルに何行の結果があるかを知り、それをカウンターに追加したい。

最善の方法は何でしょうか? grepまたはcatに関連するフラグはありますか?

136
k-man

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
159
JRFerguson

-cフラグは仕事をします。例えば:

 grep -c ^ filename

grepによって返される行をカウントします。

man page に記載:

-c、--count通常の出力を抑制します。代わりに、各入力ファイルの一致する行の数を出力します

67
peri4n

使用する

your_command | wc -l

マニュアルから:

NAME
       wc - print newline, Word, and byte counts for each file

...

       -l, --lines
          print the newline counts
21
aioobe

AWKを使用してファイル内の行を数える

awk 'END {print NR}' filename
5
Vivek parikh

Wc -lを使用して行数を取得できます。

例:

$ cat foobar.txt | wc -l
4

Wcは使用しないでください。行末記号で終了していない場合(少なくともMacでは)、最終行はカウントされません。代わりにこれを使用してください:

nbLines=$(cat -n file.txt | tail -n 1 | cut -f1 | xargs)
0
ling