发新话题
打印

Awk各部分详解-模式和操作(7)

Awk各部分详解-模式和操作(7)

模式

    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”

TOP

发新话题
版块跳转 
Powered by Discuz! 6.1.0 © 2001-2007 Comsenz Inc.
---------------------------------------------------------------------------------------
本论坛所有文章为会员所发布,会员拥有该内容的所有权力及责任,转载时请注明出处!
站务管理员:我心飞翔 QQ:12012805(请直奔主题), 联系电话:15914350818
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触和有损学校声誉的言论!
粤ICP备06054096号 茂名市公安局网警支队备案: 4409813060501

Processed in 0.194788 second(s), 9 queries, Gzip enabled.