广东技术师范学院后院社区's Archiver

2008新生录取咨询

lvdbing 发表于 2008-4-22 02:25

Awk各部分详解-格式化输出(11)

[align=left]Awk[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]Print[/size][/color][color=black][size=10.5pt]函数用于打印不需要特别编排格式的简单输出。如果需要复杂的格式输出要使用[/size][/color][color=black][size=10.5pt]printf[/size][/color][color=black][size=10.5pt]和[/size][/color][color=black][size=10.5pt]sprintf[/size][/color][color=black][size=10.5pt]函数。[/size][/color] [/align][align=left][color=black][size=10.5pt]    print[/size][/color][color=black][size=10.5pt]函数的参数可以是变量、数值或字符串常量。字符串必须用双引号括起来。参数之间用逗号分隔,如果没有逗号,所有的参数就会被串在一起。逗号等价于[/size][/color][b][color=black][size=10.5pt]OFS[/size][/color][/b][color=black][size=10.5pt]中的值,默认情况下是空格。[/size][/color][/align][align=left][color=black][size=10.5pt]    print[/size][/color][color=black][size=10.5pt]函数的输出可以被重定向,也可以通过管道传给另一个程序。其他程序的输出也可以通过管道交给[/size][/color][color=black][size=10.5pt]awk[/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-22[/size][/color][/b]
[color=black][size=10.5pt][root@localhost script]# [b]id[/b][/size][/color]
[color=black][size=10.5pt]uid[/size][/color][color=black][size=10.5pt]=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel) context=root:system_r:unconfined_t[/size][/color]

[color=black][size=10.5pt][root@localhost script]# [b]id | awk -F '[= ()]' '{print "Your LOGNAME is:"$3 "\nYour UID is:"$2 "\nYour GID is:" $6}'[/b][/size][/color]
[color=black][size=10.5pt]Your LOGNAME is:root[/size][/color]
[color=black][size=10.5pt]Your UID is:0[/size][/color]
[color=black][size=10.5pt]Your GID is:0[/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]id[/size][/color][color=black][size=10.5pt]命令,[/size][/color][color=black][size=10.5pt]id[/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]“= ()”[/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]print[/size][/color][color=black][size=10.5pt]函数,打印字符串[/size][/color][color=black][size=10.5pt]“Your LOGNAME is:”[/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]“\nYour UID is:”[/size][/color][color=black][size=10.5pt]其中这个字符串包含换行符[/size][/color][color=black][size=10.5pt]“\n”[/size][/color][color=black][size=10.5pt],同样接着把剩下的字符串和字段输出。这里为什么[/size][/color][color=black][size=10.5pt]GID[/size][/color][color=black][size=10.5pt]是第[/size][/color][color=black][size=10.5pt]6[/size][/color][color=black][size=10.5pt]个字段而不是第[/size][/color][color=black][size=10.5pt]5[/size][/color][color=black][size=10.5pt]个字段呢[/size][/color][color=black][size=10.5pt]?[/size][/color][color=black][size=10.5pt]大家先思考下吧。[/size][/color]
[/td][/tr][/table][/align][align=left][color=black][size=10.5pt][font=Arial]●[/font]         [/size][/color][color=black][size=10.5pt]转义序列[/size][/color][/align][align=left][color=black][size=10.5pt]    转义序列用一个反斜杠后跟一个字母或数字来表示。它们可以用在字符串中,代表制表符、换行符、换页符等。[/size][/color][/align][align=left][align=center][color=black][size=10.5pt]表[/size][/color][color=black][size=10.5pt]-print[/size][/color][color=black][size=10.5pt]函数使用的转义序列[/size][/color][/align][/align][align=left][table=98%,#e6e6e6][tr][td=1,1,284][color=black][size=10.5pt]转义序列[/size][/color]
[/td][td=1,1,423][color=black][size=10.5pt]含义[/size][/color]
[/td][/tr][tr][td=1,1,284][color=black][size=10.5pt]\b[/size][/color]
[/td][td=1,1,423][color=black][size=10.5pt]退格[/size][/color]
[/td][/tr][tr][td=1,1,284][color=black][size=10.5pt]\f[/size][/color]
[/td][td=1,1,423][color=black][size=10.5pt]换页[/size][/color]
[/td][/tr][tr][td=1,1,284][color=black][size=10.5pt]\n[/size][/color]
[/td][td=1,1,423][color=black][size=10.5pt]换行[/size][/color]
[/td][/tr][tr][td=1,1,284][color=black][size=10.5pt]\r[/size][/color]
[/td][td=1,1,423][color=black][size=10.5pt]回车[/size][/color]
[/td][/tr][tr][td=1,1,284][color=black][size=10.5pt]\t[/size][/color]
[/td][td=1,1,423][color=black][size=10.5pt]制表符[/size][/color]
[/td][/tr][tr][td=1,1,284][color=black][size=10.5pt]\047[/size][/color]
[/td][td=1,1,423][color=black][size=10.5pt]八进制值[/size][/color][color=black][size=10.5pt]47[/size][/color][color=black][size=10.5pt],即单引号[/size][/color]
[/td][/tr][tr][td=1,1,284][color=black][size=10.5pt]\c[/size][/color]
[/td][td=1,1,423][color=black][size=10.5pt]C[/size][/color][color=black][size=10.5pt]代表任一其他字符,例如[/size][/color][color=black][size=10.5pt]“\”[/size][/color]
[/td][/tr][/table][/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-23[/size][/color][/b]
[color=black][size=10.5pt][root@gatewate ~]# [b]date[/b][/size][/color]
[color=black][size=10.5pt]Tue Mar 25 15:40:37 HKT 2008[/size][/color]
[color=black][size=10.5pt][root@gatewate ~]# [b]date | awk '{print "Month:\t"$2 "\nYear:\t"$6}'[/b][/size][/color]
[color=black][size=10.5pt]Month:
Mar[/size][/color]
[color=black][size=10.5pt]Year:
2008[/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]date[/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]“Month:”[/size][/color][color=black][size=10.5pt],后面跟着个制表符,接着输出第[/size][/color][color=black][size=10.5pt]2[/size][/color][color=black][size=10.5pt]个字段。然后是另一个字符串[/size][/color][color=black][size=10.5pt]“Year:”[/size][/color][color=black][size=10.5pt],该串中包含换行符[/size][/color][color=black][size=10.5pt]\n[/size][/color][color=black][size=10.5pt],最后是[/size][/color][color=black][size=10.5pt]date[/size][/color][color=black][size=10.5pt]输出结果的第[/size][/color][color=black][size=10.5pt]6[/size][/color][color=black][size=10.5pt]个字段。[/size][/color]
[/td][/tr][/table][/align]

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.