and the winner is...
Ah, benchmarks - what else would we spend our CPU cycles on anyway? Quite a long time ago I was surprised to see that awk was so much slower than grep. This was a long time ago and I don't remember all the details, but there was sort involved too, and it was GNU/grep vs. Solaris/awk, IIRC. Anyway, here's what I did just now:
# ls -lhgo du.all; wc -l du.all -rw-r--r-- 1 2.2M Jan 7 17:26 du.all 23773 du.all # time sort -n du.all | grep -v /home > /dev/null real 0m8.939s user 0m8.920s sys 0m0.010s # time grep -v /home du.all | sort -n > /dev/null real 0m25.694s user 0m25.670s sys 0m0.010s # time awk '!/\/home/' du.all | sort -n > /dev/null real 0m0.622s user 0m0.620s sys 0m0.010sYes, the sort(1) is not even relvant here, it's really grep(1) taking so long. There's a --mmap switch to grep, promising better performance and sometimes coredumps, neither of both happened. This was done with GNU sort-4.5.3, GNU Awk 3.1.1, GNU grep 2.5.1. Oh, yeah - these may have been "current" versions back in ~2002 :)