-oการนับเหตุการณ์ทั้งหมดใช้ ลองสิ่งนี้:
echo afoobarfoobar | grep -o foo | wc -l
และman grepแน่นอน (:
อัปเดต
บางคนแนะนำให้ใช้เพียงแทนgrep -co foogrep -o foo | wc -l
อย่า.
ทางลัดนี้จะใช้ไม่ได้ในทุกกรณี หน้าคนพูดว่า:
-c print a count of matching lines
ความแตกต่างในแนวทางเหล่านี้แสดงไว้ด้านล่าง:
1.
$ echo afoobarfoobar | grep -oc foo
1
ทันทีที่พบการจับคู่ในบรรทัด ( a{foo}barfoobar) การค้นหาจะหยุดลง 1เพียงหนึ่งบรรทัดถูกตรวจสอบและการจับคู่เพื่อให้ออกเป็น ที่จริง-oจะถูกข้ามไปที่นี่และคุณสามารถใช้grep -cแทนได้
2.
$ echo afoobarfoobar | grep -o foo
foo
foo
$ echo afoobarfoobar | grep -o foo | wc -l
2
พบสองรายการที่ตรงกันในบรรทัด ( a{foo}bar{foo}bar) เนื่องจากเราขอให้ค้นหาทุกเหตุการณ์ที่เกิดขึ้น ( -o) อย่างชัดเจน ทุกครั้งที่เกิดขึ้นจะถูกพิมพ์บนบรรทัดที่แยกจากกันและwc -lนับจำนวนบรรทัดในเอาต์พุตเท่านั้น