7.3 awk command and program examples
10. Examples:
$ awk '/Albuquerque/' cities
Albuquerque, New Mexico
$ grep 'Albuquerque' cities
Albuquerque, New Mexico
$ awk '{print}' people
John,P. Physics 20
Rick,L. Mechanical 21
Jack,T. electrical 23
Larry,M. Chemical 22
Mary,Q. Electrical 21
Betty,B. Math 22
Mike,A. Civil 23
Ruth,M. Math 21
Tony,R. English 22
Sarah,S. Electrical 24
$ awk '$3 > 22 { print $1 }' people
Jack,T.
Mike,A.
Sarah,S.
$ awk '$2 ~ /[Ee]lectrical/ { print $1 }' people
Jack,T.
Mary,Q.
Sarah,S.
$ awk '$0 ~ /^J.*/ { print $0 }' people
John,P. Physics 20
Jack,T. electrical 23
$ cat awkprog1
{ sum += $3
++no
}
END { printf "The average age is %.2f\n", sum/no }
$ awk -f awkprog1 people
The average age is 21.90
$ cat awkprog2
BEGIN { print "This is another variation" }
{ sum += $3
}
END { printf "The average age is %.2f\n", sum/NR }
$ awk -f awkprog2 people
This is another variation
The average age is 21.90
$ awk '{ if ($1 ~ /^J/) printf "%s\n", $0 > "Jfile"
> if ($2 ~ /^C/) printf "%s\n", $0 > "Cfile" }' people
$ cat Jfile
John,P. Physics 20
Jack,T. electrical 23
$ cat Cfile
Larry,M. Chemical 22
Mike,A. Civil 23
$ cat awkprog3
{ pos = index($1,",");
lname = substr($1,pos+1,2);
fname = substr($1,1,1);
major = substr($2,1,3);
name = fname lname;
printf "%s\t%s\t%s\n", name, major, $3 | "sort"
}
$ awk -f awkprog3 people
BB. Mat 22
JP. Phy 20
JT. ele 23
LM. Che 22
MA. Civ 23
MQ. Ele 21
RL. Mec 21
RM. Mat 21
SS. Ele 24
TR. Eng 22
$ cat awkprog4
BEGIN {
pi = 3.14159
if (figure == "circle")
printf "Area of a circle is %d\n", pi*s*s
if (figure == "square")
printf "Area of a square is %d\n", s*s
if (figure == "triangle")
printf "Area of a triangle is %d\n", 0.5*s*s
}
$ awk -f awkprog4 -v figure=circle -v s=3
Area of a circle is 28
$ cat products
knapsacks 22.00 11
knickers 44.95 0
knishes 1.29 193
knives 11.98 57
knobs .27 35
$ awk '{ print $1, $2, $2 * $3 }' products
knapsacks 22.00 242
knickers 44.95 0
knishes 1.29 248.97
knives 11.98 682.86
knobs .27 9.45
$ awk '$3 > 0 { print $1, $2, $2 * $3; sum += $2 * $3 }
> END { print "\nTOTAL:", sum }' products
$ ls -la | awk '$1 ~ /^d/ { print $9 "/" } $1 ~ /^-..x/ { print $9 "*" }'
Questions? Robert Katz: katz@ned.highline.edu
Last Update April 7, 2005