gawk - pattern scanning and processing language
AWK is named after the surnames of its three authors, who are Alfred Aho, Peter Weinberger, and Brian Kernighan.
mawk, gawk
Pre-defined variables in awk
- $0: entire current record/line
- $1, $2, ...: the first, second,... fields in current record/line
- NF: number of fields
- NR: number of records/lines
Built-in functions
Examples
Print the first column of /etc/passwd file. The /etc/passwd uses ':' (colon) as separator between columns.
$ awk -F: '{ print $1}' /etc/passwd
Print process id (PID) column
ps | print '{print $1}'
Create get_tags_pre.awk file with content
/<pre>/,/<\/pre>/ { print; }
Get all content inside <pre> tags
cat inputfile.txt | awk -f get_tags_pre.awk > outputfile.txt
Get just indented lines below "Standard IP access list 11"
root@T420:~# cat acl1.txt | awk '/access list 11/ && !f{f=1;x=$0;sub(/[^ ].*/,"",x);x=x" ";print;next} f {if (substr($0,1,length(x))==x)print; else f=0}' Standard IP access list 11 10 permit 212.1.116.12
Print parent rule and subrules in checkpoint firewall
awk -F";" -v parentrule="" 'BEGIN{print "===START==="}; $2 ~ /8030 -/ || $1 ~ parentrule {split($1,array,".");parentrule=array[1]; print $0;}; END{print "\n===END===\n";}' samplerule.csv
References
Books about gawk
GAWK: Effective AWK Programming by Arnold D. Robbins
Courses about awk
Linux Administration with sed and awk | Andrew Mallett