awk '{print "--test"}' /etc/passwd 对于/etc/passwd文件中的每一行都会输出--test
2.多字段的处理
awk -F":" '{print $1 $3}' /etc/passwd 将 /etc/passwd文件中的每一行以:分割,然后输出第1和第3列
awk -F":" '{print "name: " $1 "\t\tuid: " $3}' /etc/passwd 输出name和uid
3.外部脚本
awk -f awk01.awk /etc/passwd 其中awk01.awk的内容为 BEGIN{ FS=":"} {print $1}。上面功能等同于一下代码
awk 'BGEIN{FS=":"} {print $1}'
4. BEGIN和 END块
awk在开始处理输入文件之前会执行一次BEGIN块,同理在处理输入文件后执行一次END块
5.正则表达式,表达式和块
awk '/[0-9]\.[0-9]*/{print}' /etc/passwd , /[0-9]\.[0-9]*/匹配正则的行输出
awk -F":" '$1=="daokun.zhu" {print $3}' /etc/passwd ,输出已“:”分割的行中其中第一列等于daokun.zhu那一行的第三列。
awk提供了比较完整的运算符集合,包含==,<,>,<=,>=和!=。另外还包含了 ~,!~分别表示匹配和不匹配,用法为在运算符左边指定变量,右边指定正则表达式。如:awk -F":" '$1~/root/ {print}' /etc/passwd 输出第一列匹配root的行。
6.条件语句
上面的例子还可以写为:awk -F":" '{if($1~/root/){print}}' /etc/passwd
awk还允许使用布尔运算符 ||,&&
7.数字变量
统计空白行并输出
BEGIN {x=0}
/^$/ {x=x+1}
END{print "I found " x "blank lines."}
8.支持众多数字运算符
除了+,-,*,/外还支持 ^指数,%求余,++,--,加减乘除的赋值余数符(a+=3……)
未完待续……