模式
Awk模式用来控制awk对输入文本执行什么操作。模式由正则表达式、判断条件真伪或二者的组合构成。Awk默认操作是打印所有表达式结果为真的文本行。模式表达式中暗含着if语句。如果模式表达式含有if(如果)的意思,就不必用花括号把它括起来。当if是显式地给出时,这个表达式就成了操作语句,语法将不一样。
范例 3-11
[root@localhost script]# awk '/root/' passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
### 解析 ###
打印包含模式 root 的记录。这里没有显式地指出打印操作,默认是打印匹配到的行。
范例 3-12
[root@localhost script]# awk -F ':' '$3 < 5' passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
### 解析 ###
如果第3个字段的值小于5,则打印该记录。
|
操作
操作(action)是花括号中以分号分隔的语句。如果操作前面有个模式,则该模式控制执行操作的时间。操作可以是简单的语句或复杂的语句组。同一行内的多条语句由分号分隔,独占一行的语句则以换行符分隔。
格式
{action}
范例 3-13
[root@localhost script]# awk -F ':' '{print $1,$3,$7}' passwd
root 0 /bin/bash
bin 1 /sbin/nologin
daemon 2 /sbin/nologin
adm 3 /sbin/nologin
lp 4 /sbin/nologin
sync 5 /bin/sync
shutdown 6 /sbin/shutdown
… … …
### 解析 ###
打印第1、第3和第7个字段,其中操作是括在花括号里面的语句{print $1,$3,$7}。
模式可以和操作结合使用。操作是括在花括号里面的语句,模式控制它后面第一个左花括号到第一个右花括号之间的操作。操作如果紧跟在某个模式后面,它的第一个左花括号就必须与该模式同一行。模式不能出现在花括号中。
格式
模式 {操作语句;
操作语句; …;}
或
模式 {
操作语句
操作语句
…
}
范例 3-14
[root@localhost script]# awk -F ':' '/root/{print "Hello," $1}' passwd
Hello,root
Hello,operator
### 解析 ###
如果记录中包含模式 root ,就会打印出字符串 “Hello,root”。
|