Awk Tutorials and examples
Using Awk to sum the list of output:
ps aux | awk '{sum +=$4}; END {print sum}'
Print Line that match a pattern:
awk ‘/string1/ > /string2/’ filename
Print specific fields :
awk ‘{print $1,$3,$5,$NF;}’ /etc/passwd
[ $NF means the last field ]
Initialization and Finalization:
BEGIN {actions}
{ACTION}#process everyline
END{ actions}
[#=comment for awk]
eg. ps aux | grep -v grep | awk ‘{print $4}’ | awk ‘{total = total +$1}END{print total}
or ps aux | awk ‘{sum +=$4}; END {print sum}’
Find Value more than some value :
awk ‘$1 > 30’ somefilename
[$1 = first field ]
Print the pattern from a list :
awk ‘$3′ ~/string/’ filename
Count the number of matching pattern :
awk ‘BEGIN { count = 0;}
$3 ~ /string/ {count++;}
END { print “Number of Total Count : = “,count;}’ filename
[$3 = third field , ~ is for comparing with regular expressions ]
Examples :
awk -F ‘:’ ‘{ total += NF }; END { print total }’ /etc/paswd [count number of fields in a file ]
awk -F ‘:’ ‘$NF ~ //bin/bash/ { n++ }; END { print n }’ /etc/passwd [ number of users using /bin/bash shell ]
awk -F ‘:’ ‘$3 > maxuid { maxuid=$3; maxline=$0 }; END { print maxuid, maxline }’ /etc/passwd [ find user who has highest user id ]
awk ‘NR % 2 == 0’ /etc/passwd [ print even numbered lines ]
$awk -F ‘:’ ‘$3==$4’ /etc/passwd [ print user having same uid and gid ]
awk -F ‘:’ ‘$3>=500 && $NF ~ //bin/bash/’ /etc/passwd [ user who has userid greater or equal to 500 and shell is /bin/bash ]
awk -F ‘:’ ‘$5 == “” ‘ /etc/passwd [ user who doesnot have comment ]