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