Skipping grep when using AWK
Over the years, We've seen many people use this pattern (filter-map):
$ [data is generated] | grep something | awk '{print $2}'
but it can be shortened to:
$ [data is generated] | awk '/something/ {print $2}'
You (probably) don't need grep
Following this logic, you can replace a simple grep with:
$ [data is generated] | awk '/something/'
This will implicitly print lines that match the regular expression.
If you feel lost, Here are a series of posts about awk for you:
Why would you want to do this?
There are a number of reasons:
- it's shorter to type
- it spawns one less process
- awk uses modern (read "Perl") regular expressions, by default - like
grep -E
- it's ready to "augment" with more awk
What about grep -v
?
grep -v
can be done with:
$ [data is generated] | awk '! /something/'
Reference: jpalardy.com