ファイルごとの出現回数が必要な場合(文字列 "tcp"の例):
grep -RIci "tcp" . | awk -v FS=":" -v OFS="\t" '$2>0 { print $2, $1 }' | sort -hr
出力例:
53 ./HTTPClient/src/HTTPClient.cpp
21 ./WiFi/src/WiFiSTA.cpp
19 ./WiFi/src/ETH.cpp
13 ./WiFi/src/WiFiAP.cpp
4 ./WiFi/src/WiFiClient.cpp
4 ./HTTPClient/src/HTTPClient.h
3 ./WiFi/src/WiFiGeneric.cpp
2 ./WiFi/examples/WiFiClientBasic/WiFiClientBasic.ino
2 ./WiFiClientSecure/src/ssl_client.cpp
1 ./WiFi/src/WiFiServer.cpp
説明:
grep -RIci NEEDLE .
-バイナリを無視し、出現回数をカウントし、大文字と小文字を無視して、現在のディレクトリ(シンボリックリンクに従います)から再帰的に文字列NEEDLEを検索します
awk ...
-このコマンドは、出現がゼロのファイルを無視し、行をフォーマットします
sort -hr
-行を最初の列の数値で逆順にソートします
もちろん、オプション-c
(count)を指定した他のgrepコマンドでも動作します。例えば:
grep -c "tcp" *.txt | awk -v FS=":" -v OFS="\t" '$2>0 { print $2, $1 }' | sort -hr