-o
การนับเหตุการณ์ทั้งหมดใช้ ลองสิ่งนี้:
echo afoobarfoobar | grep -o foo | wc -l
และman grep
แน่นอน (:
อัปเดต
บางคนแนะนำให้ใช้เพียงแทนgrep -co foo
grep -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
นับจำนวนบรรทัดในเอาต์พุตเท่านั้น