Nếu bạn muốn số lần xuất hiện trên mỗi tệp (ví dụ cho chuỗi "tcp"):
grep -RIci "tcp" . | awk -v FS=":" -v OFS="\t" '$2>0 { print $2, $1 }' | sort -hr
Ví dụ đầu ra:
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
Giải trình:
grep -RIci NEEDLE .
- tìm chuỗi NEEDLE đệ quy từ thư mục hiện tại (theo các liên kết tượng trưng), bỏ qua các nhị phân, đếm số lần xuất hiện, bỏ qua trường hợp
awk ...
- lệnh này bỏ qua các tệp có số lần xuất hiện và định dạng dòng
sort -hr
- sắp xếp các dòng theo thứ tự ngược theo số trong cột đầu tiên
Tất nhiên, nó cũng hoạt động với các lệnh grep khác với tùy chọn -c
(tính). Ví dụ:
grep -c "tcp" *.txt | awk -v FS=":" -v OFS="\t" '$2>0 { print $2, $1 }' | sort -hr