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