Tips for writing efficient Bash scripts
hacktux.com
hacktux.com
On the other hand, I don't know if these type of performance optimizations will have many real-world applications. For example, if you are calling grep and awk inside a loop, and find it unacceptable slow, I don't think you are going to see a big performance gain by calling only awk. At that point, your best bet may be to write that part of your script in Perl (or C, like I did once back in the times before Perl was mainstream).
For your grep example, unless you are using the output of grep for something else, there's no reason not to use the awk version except ignorance (which I'm plenty guilty of re: awk and sed...)