web-dev-qa-db-ja.com

端末出力の行数を数える

sOでこれを見つけることができませんでした。端末で次のコマンドを実行しました。

>> grep -Rl "curl" ./

キーワードcurlが発生したファイルのリストが表示されます。ファイル数を数えたい私が考えることができる最初の方法は、端末に来た出力の行数を数えることです。どうやってやるの?

224
roopunk

-l行数)スイッチを使用して、結果を wc にパイプ処理します。

grep -Rl "curl" ./ | wc -l
406
João Silva

答えとしてEaterOfCodeのコメントをここに入れてください。

grep自体にも、カウントを返すだけの-cフラグがあります。

そのため、コマンドと出力は次のようになります。

$ grep -Rl "curl" ./ -c
24

編集:

この答えはもっと短いかもしれず、したがって受け入れられた答えよりも良く見えるかもしれませんが(それはwcを使用しています)。私はもうこれに同意しません。 wc -lにパイプすることで行を数えることができることを覚えているように思います。grep以外のプログラムでも使用できます。

53
JelteF

「wc」へのパイピングは、最後の行が改行で終わる場合に改善される可能性があります(この場合、それはそうなることを知っています)
ただし、最後の行が改行で終わらない場合、「wc -l」は誤った結果を返します。

例:

$ echo "asd" | wc -l

1を返します

$ echo -n "asd" | wc -l

0を返します


だから私がよく使うのはgrep <anything> -c

$ echo "asd" | grep "^.*$" -c
1

$ echo -n "asd" | grep "^.*$" -c
1

これは、wc -lが返すものよりも現実に近いものです。

0
GCS