
grep コマンドを実行すると:
grep -rc 'PATTERN' .
パターンが出現する行数を出力しますが、次のようになります。
./hotel_232424.dat:234
等々...
./hotel_232424.dat:
部品を削除して番号だけを印刷するにはどうすればよいでしょうか?
答え1
の GNU 実装では、そのための/オプションgrep
があります。-h
--no-filename
$ grep -rc PATTERN .
./b:1
./a:0
./1/2/c:2
$ grep -rhc PATTERN .
1
0
2
ポータブル/標準の同等品は次のようになります。
$ find . -type f -exec grep -c PATTERN {} \;
0
2
1
ただし、grep
ファイルごとに 1 回の呼び出しを実行することになります。
代わりに、発生回数の合計 (ここでは 1+2 = 3) が必要な場合は、次のようにします (移植可能):
$ find . -type f -exec cat {} + | grep -c PATTERN
3
(一部のファイル(つまり、テキスト以外のファイル)の最後の行の後にデータがある場合、結果が台無しになる可能性があることに注意してください)
または、あなたのようなgrep
サポートがあれば-r
:
$ grep -r PATTERN . | wc -l
3