ในขณะที่ฉันเห็นด้วยในทางทฤษฎี grep
ควรจะเร็วกว่าawk
ในทางปฏิบัติ YMMV นั้นขึ้นอยู่กับการใช้งานที่คุณใช้เป็นอย่างมาก
ที่นี่เปรียบเทียบ grep and awk ของ busybox 1.20.0, GNU grep 2.14, mawk 1.3.3, GNU awk 4.0.1 บน Debian / Linux 7.0 amd64 (พร้อม glibc 2.17) ในโลแคล UTF-8 ในไฟล์ 240MB 2.5M บรรทัดของ อักขระ ASCII เท่านั้น
$ time busybox grep error error | wc -l
331003
busybox grep error error 8.31s user 0.12s system 99% cpu 8.450 total
wc -l 0.07s user 0.11s system 2% cpu 8.448 total
$ time busybox awk /error/ error | wc -l
331003
busybox awk /error/ error 2.39s user 0.84s system 98% cpu 3.265 total
wc -l 0.12s user 1.23s system 41% cpu 3.264 total
$ time grep error error | wc -l
331003
grep error error 0.80s user 0.10s system 99% cpu 0.914 total
wc -l 0.00s user 0.11s system 12% cpu 0.913 total
$ time mawk /error/ error | wc -l
330803
mawk /error/ error 0.54s user 0.13s system 91% cpu 0.732 total
wc -l 0.03s user 0.08s system 14% cpu 0.731 total
$ time gawk /error/ error | wc -l
331003
gawk /error/ error 1.37s user 0.12s system 99% cpu 1.494 total
wc -l 0.04s user 0.07s system 7% cpu 1.492 total
$ time
ในโลแคล C grep ของ GNU เท่านั้นที่ได้รับการสนับสนุนอย่างมาก mawk
ได้รับเพิ่มที่สำคัญและกลายเป็นเร็วกว่า
ชุดข้อมูลประเภทของ regexp อาจสร้างความแตกต่างใหญ่ สำหรับ regexps awk
ควรเปรียบเทียบกับgrep -E
เป็นawk
regexps นั้นขยาย REs
สำหรับชุดข้อมูลนี้awk
อาจเร็วกว่าgrep
ระบบที่อิงกับ busybox หรือระบบซึ่งmawk
เป็นค่าเริ่มต้นawk
และโลแคลเริ่มต้นคือ UTF-8 ตาม (IIRC มันเคยเป็นกรณีใน Ubuntu)
time
คำสั่งในเวลาที่ใช้ในการรันคำสั่งtime ls -l
Ex: