Agreed, this is one the primary principles of the Unix Philosophy [1].
I was curious how performance would be impacted, and for a large file `grep` may not be so useless.
$ du -h /tmp/file.json
161M /tmp/file.json
$ time awk -F: '/"id"/ { print $1 }' /tmp/file.json >/dev/null
real 0m17.810s
user 0m17.690s
sys 0m0.083s
$ time (grep '"id"' /tmp/file.json | awk -F: '{ print $1 }' >/dev/null)
real 0m3.617s
user 0m3.641s
sys 0m0.037s
While pushing the filter into AWK is a bit easier on the eyes, it appears there is an incurred performance cost.[1] http://www.catb.org/~esr/writings/taoup/html/ch01s06.html