(Updated: 2019-09-05)
| AWK Expression | Description | 
| awk '/l.c/{print}' /etc/hosts | [do a regex match with string containing 1 cahrector b/w l & c] | 
| awk '/l*c/{print}' /etc/hosts | [regex match everything b/w charectors l & c] | 
| awk '/[al1]/{print}' /etc/hosts | [a regex match with strings containing charectors a,l or l in a line] | 
| awk '/[0-9]/{print}' /etc/hosts | [prints all lines with numbers in them] | 
| awk '/^10./ {print}' /etc/hosts | [print all lines beginning with number 10] | 
| awk '/rs$/{print}' /etc/hosts | [print all lines ending with rs] | 
| awk '/\$25.00/{print}' somedta.txt | [escaping the $ character] | 
| awk '//{print $1, $2, $3; }' somedta.txt | [print columns 1,2 & 3 with fields separated by a space] | 
| awk '//{printf "%-10s %s\n",$2, $3 }' my_shopping.txt | [imporves spacial formatting between fields] | 
| awk '/ *\$[2-9]\.[0-9][0-9] */ { print $1, $2, $3, $4, "*" ; } / *\$[0-1]\.[0-9][0-9] */ { print ; }' food_prices.list | [multiple pattern matches & awk commands separateed by ;] | 
| "awk '/ *\$[2-9]\.[0-9][0-9] */ { printf ""%-10s %-10s %-10s %-10s\n"", $1, $2, $3, $4 ""*"" ; } / *\$[0-1]\.[0-9][0-9] */ { printf ""%-10s %-10s %-10s %-10s\n"", $1, $2, $3, $4; }' somedta.txt | |
| " | [use printf for improved formatting] | 
| awk '/ *\$[2-9]\.[0-9][0-9] */ { print $0 "*" ; } / *\$[0-1]\.[0-9][0-9] */ { print ; }' somedta.txt | [value $0 denotes entire line with awk] | 
| awk '$3 <= 30 { printf "%s\t%s\n", $0,"**" ; } $3 > 30 { print $0 ;}' somedta.txt | [match value of 3rd column & print result accordingly] | 
| awk '($3 ~ /^\$[2-9][0-9]*\.[0-9][0-9]$/) && ($4=="Tech") { printf "%s\t%s\n",$0,"*"; } ' somedta.txt | [example of using multiple conditions in single awk command] | 
| awk '$4 <= 20 { printf "%s\t%s\n", $0,"*" ; next; } {print $0 ;}' somedta.txt | [add a * at the end of the line if value in 4th column is less than or euqal to 20] | 
| ls -l | awk '$3 != "sahil" {print}' | [print files not owned by user sahil] | 
| uname -a | awk 'hostname = $2 {print hostname}' | [using variables. assigned value of 2nd field to a variable named hostname] | 
| awk '/^example.com/ { counter=counter+1 ; printf "%s\n", counter ; }' somedta.txt | [use numeric variable in a for loop to count occurrances of lines beginning with techmint.com] | 
| awk '/^example.com/ { counter=counter+1 ;} END {printf "%s\n", counter ; }'somedta.txt | [print only total number of times example.com occurs in file] | 
| awk 'BEGIN {count=0} /^example.com/ {count+=1} END {printf "%s\n", count ;}'somedta.txt | [result is same as above example but here we've used begin & end both] | 
| ls -l | grep ^- | awk 'BEGIN {total=0} {total+=$5} END {print total/1024/1024}' | [print the total size of files in current directory in MB] | 
| awk 'BEGIN {print "this is a begin Test"} /^example.com/ { counter=counter+1 ;} END { printf "%s\n", counter ; }'somedta.txt | [using begin & end. begin is executed before input lines are read. END is executed after all input lines are read] | 
| awk '{print FILENAME}'somedta.txt | [FILENAME is a built in which stores the file name. This awk command will print the file name as many times as the number of lines in the file] | 
| awk '{print NR, "has", NF, "fields" $1}'somedta.txt | [NR is number of records/rows. NF is the number of fields/columns] | 
| awk ' END { print "Number of records in file is: ", NR } 'somedta.txt | [print total number of rows] | 
| awk -F':' '{ print $1, $4 ;}' /etc/passwd | [change input filed separater] | 
| awk -F':' '$1 == "sahil" {print}' /etc/passwd | [match user sahil in passwd file & print the matching line] | 
| awk -F':' '/sahil/ {print "user", $1,"has shell", $7}' /etc/passwd | [search for user sahil in passwd file & print user name & shell] | 
| awk -F':' '{if($1 == "sahil") print ;}' passwd | [does the same as above example but using if condition] | 
| awk -F';' '{if ($1 == "12345") {$6 = 5000;} {OFS = ";"} {print $0;}}' file.txt | [if 1st column has value 12345 then change value of 6th column to 5000] | 
| awk ' BEGIN { FS=":" ; } { print $1, $4 ; } ' /etc/passwd | [change input field separater 2nd method] | 
| awk -F':' ' BEGIN { OFS="==>" ;} { print $1, $4 ;}' /etc/passwd | [change input & output field separater] | 
| user=root ; awk "/$user/ {print}" /etc/passwd | [use shell variable in an awk statement] | 
| awk 'BEGIN{ for(count=0;count<=5;count++){ print "sometext"} }' | [for loop in awk. This prints the string sometext 5 times to stdout] | 
| awk 'IGNORECASE = 1; /SaHil/ {print ;}' somedata.txt | [do a case insensitive search with AWK] | 
| echo "sahil" | awk '{print substr ($1,1,2)}' | [use substring function in awk to chop off part of a string] | 
| awk 'sub ("example.com", "test.com",$1)'somedta.txt | [replace all occurances of example.com in 1st column with sahil.com] | 
| "awk 'BEGIN {count=0} | |
| { if($1 == ""example.com"") | |
| {count++} | |
| if(count == 3) | |
| { sub(""example.com"",""UNIX"",$1)}} | |
| { print $0}' somedta.txt | |
| " | [replace 3rd occurance of example.com with UNIX] | 
| awk '{if ($NR%2 ==0) {print $0, "\n TESTLINE"} else {print $0}}' somedta.txt | [insert the word TESTLINE in a newline after every line] | 
| awk 'NR >3 && NR < 6 {print}' somedta.txt | [print line number 4 & 5 from the file] | 
| awk '!/^$/' somedta.txt | [remove blank lines from a file] | 
| awk 'NR%2{printf "%s ",$0;next;}1' somedta.txt | [join 2 line. replace newline with a space] | 
| awk '{printf $0;printf " "}NR % 2 ==0 {print " "}' somedta.txt | [join 2 line. replace newline with a space] | 
| awk '{printf $0;printf " "}NR % 3 ==0 {print " "}' somedta.txt | [join 3 line. replace newline with a space] | 
| awk '{ print $NF }' somedta.txt | [print last column in a file] | 
| df -hTP | awk '{gsub(/%/,"")}1 {print $1,$6}' | [Replace the % character with a space from df -h output] | 
| df -hTP | awk '{gsub(/%/,"",$6)}1 {print $1,$6}' | [Replace the % character with a space from df -h output limited to 6th column] |