หากคุณต้องการจำนวนครั้งต่อไฟล์ (ตัวอย่างสำหรับสตริง "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 ซ้ำจากไดเรกทอรีปัจจุบัน (ตาม symlink) ละเว้นไบนารีจำนวนการนับจำนวนการเกิดกรณีที่ไม่สนใจ
awk ...
- คำสั่งนี้จะไม่สนใจไฟล์ที่มีศูนย์เกิดขึ้นและบรรทัดรูปแบบ
sort -hr
- เรียงลำดับบรรทัดย้อนกลับตามตัวเลขในคอลัมน์แรก
แน่นอนมันทำงานได้กับคำสั่ง grep อื่น ๆ พร้อมตัวเลือก-c
(จำนวน) เช่นกัน ตัวอย่างเช่น:
grep -c "tcp" *.txt | awk -v FS=":" -v OFS="\t" '$2>0 { print $2, $1 }' | sort -hr