Si bien estoy de acuerdo en que en teoría grepdebería ser más rápido que awk, en la práctica, YMMV ya que eso depende mucho de la implementación que use.
aquí comparando grep y awk de busybox 1.20.0, GNU grep 2.14, mawk 1.3.3, GNU awk 4.0.1 en Debian / Linux 7.0 amd64 (con glibc 2.17) en un entorno local UTF-8 en un archivo de 240 MB de líneas de 2.5M Caracteres solo 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
En la configuración regional C, solo GNU grep recibe un impulso significativo y se vuelve más rápido que mawk.
El conjunto de datos, el tipo de expresión regular también puede hacer una gran diferencia. Para las expresiones regulares, awkdebe compararse con las expresiones regulares grep -Ecomo awklas expresiones regulares extendidas.
Para este conjunto de datos, awkpodría ser más rápido que grepen los sistemas basados en busybox o sistemas donde mawkel valor predeterminado awky la configuración regional predeterminada se basa en UTF-8 (IIRC, solía ser el caso en Ubuntu).
timecomando para medir el tiempo que se tarda en ejecutar el comando. Ej:time ls -l.