awk provides filtering capabilities like those supported by the grep and sed commands, along with some more nifty features. And similar to many command line utilities, awk can accept input from both stdin and files.
By default, awk automatically loops over the input content line by line. You can then use programming instructions to process those lines. Here are some basic examples:
# same as: grep 'at' and sed -n '/at/p'
$ printf 'gate\napple\nwhat\nkite\n' | awk '/at/'
gate
what
# same as: grep -v 'e' and sed -n '/e/!p'
$ printf 'gate\napple\nwhat\nkite\n' | awk '!/e/'
what
# lines containing 'e' followed by zero or more characters and then 'y'
$ awk '/e.*y/' greeting.txt
Have a nice dayIn the above examples, only the filtering condition was given. By default, when the condition evaluates to true, the contents of $0 (input record) is printed. Thus:
awk '/regexp/'is a shortcut forawk '$0 ~ /regexp/{print $0}'awk '!/regexp/'is a shortcut forawk '$0 !~ /regexp/{print $0}'