|
awk 用 “模式” 来控制对输入的文本执行什么操作。模式判断条件,正则表达式,或者是二者的组合构成。模式表达式中暗含了 if 语句。比如下面的命令:# df |awk '$2 < 1028736'
none 1019276 240 1019036 1% /dev df 命令查看磁盘的空间,这里使用 awk 找出空间小于 1019276K 的挂载点。在 awk 中,$2 < 1028746 是一个判断条件,该判断已经隐含使用了 if 语句。如果显式的给出 if,那么这个表达式就会成了“操作“语句。
操作(action) 是写在花括号中,并以分号分隔的语句。操作可以是简单的一条语句,也可以是多条复杂的语句组。同一行内的多条语句由分号分隔,独占一行的语句则以换行符分隔。如下所示两种格式:
格式一:模式 { 操作语句1; 操作语句2; ...; } 格式二:
下面使用 ”模式 + 操作“ 处理一个简单的文本,文本(temp.txt)的内容如下:abc www 3201 3/13/11 30138
def gro 3033 2/32/13 02901
xyz dai 3010 8/81/11 10391
opq lio 8901 7/18/38 31899
执行下面命令:# awk '/xyz/{print "Hello ", $1; print "Your number is ", $5}' temp.txt Hello xyz
Your number is 10391 上面命令中的 $1 和 $5 也可以写到 print 函数中,这时候要用引号将它们括起来方能解析成它所代表的记录,否则就直接打印成 $1 或 $5:# awk '/xyz/{print "Hello $1"; print "Your number is "$5""}' temp.txt
Hello $1
Your number is 10391 |
|