パターン発生回数を繰り返し計算する場合のファイル名の削除

パターン発生回数を繰り返し計算する場合のファイル名の削除

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

おすすめ記事