awk程序是由主输入的循环组成的,一个循环是一个例程,它将一直重复执行直到一些存在的条件使它终止。主输入循环是一个例程。循环的次数=文件的行数。
awk充许编写两个特殊的例程,BEGIN和END。
cat name
=>
John Robinson,Koren Inc.,978 4th Ave.,Boston,MA:01760,696-0987
Phyllis Chapman,GVE Corp.,34 Sea Drive,Amesbury,MA:01881,879-0900
Bulent Green, WR Corp., 46 Win, Alameda, MA:93253, 356-3635
Lily Smith, Beyondsoft Corp., 28 Win, Beijing, BJ:2535, 010-4546
awk中指定分隔符
使用-F参数
awk -F"/t" '{print $1}' #使用制表符为分隔符
使用FS系统变量
awk 'BEGIN {FS=","} {print $1}' name #FS默认是空格
还可以用正则表达式来指定分隔符
awk -F"[,:]" '{print $6}' name
awk中判断字段是否匹配
sed -n '/^$/!p' name | awk -F"," '$5!~/MA/{print $1 "," $6}'
=>
Lily Smith, 010-4546
awk中变量的使用
awk '/^$/ {x++} END{print x}' name #打印空格的数目
=>3
cat scre
=>
John 85 92 78 94 88
andrea 89 90 75 90 86
jasper 84 88 80 92 84
awk '{total=$2+$3+$4+$5+$6;avg=total/5;print $1,avg}' score #打印名字与平均成绩
=>
John 87.4
andrea 86
jasper 85.6