发新话题
打印

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

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

Awk命令的操作部分被括在花括号内。如果未指定操作,则匹配到模式时,awk会采取默认操作,即在屏幕上打印包含模式的行。Print函数用于打印不需要特别编排格式的简单输出。如果需要复杂的格式输出要使用printfsprintf函数。

    print函数的参数可以是变量、数值或字符串常量。字符串必须用双引号括起来。参数之间用逗号分隔,如果没有逗号,所有的参数就会被串在一起。逗号等价于OFS中的值,默认情况下是空格。

    print函数的输出可以被重定向,也可以通过管道传给另一个程序。其他程序的输出也可以通过管道交给awk打印。

范例 3-22
[root@localhost script]# id
uid=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

[root@localhost script]# id | awk -F '[= ()]' '{print "Your LOGNAME is:"$3 "\nYour UID is:"$2 "\nYour GID is:" $6}'
Your LOGNAME is:root
Your UID is:0
Your GID is:0
### 解析 ###
首先先执行id命令,id命令输出的数据通过管道传给awkawk以输入分隔符为“= ()”,一个等于号,一个空白符,一个左小括号,一个右小括号,awk在遇到这些符号的时候都会进行字段的分隔的。然后通过print函数,打印字符串“Your LOGNAME is:”,接着输出第3个字段,接着输出字符串“\nYour UID is:”其中这个字符串包含换行符“\n”,同样接着把剩下的字符串和字段输出。这里为什么GID是第6个字段而不是第5个字段呢?大家先思考下吧。

         转义序列

    转义序列用一个反斜杠后跟一个字母或数字来表示。它们可以用在字符串中,代表制表符、换行符、换页符等。

-print函数使用的转义序列

转义序列
含义
\b
退格
\f
换页
\n
换行
\r
回车
\t
制表符
\047
八进制值47,即单引号
\c
C代表任一其他字符,例如“\”


范例 3-23
[root@gatewate ~]# date
Tue Mar 25 15:40:37 HKT 2008
[root@gatewate ~]# date | awk '{print "Month:\t"$2 "\nYear:\t"$6}'
Month:
Mar

Year:
2008

### 解析 ###
date命令的输出通过管道发送给awk,打印显示字符串“Month:”,后面跟着个制表符,接着输出第2个字段。然后是另一个字符串“Year:”,该串中包含换行符\n,最后是date输出结果的第6个字段。



№→  Learning 《Perl Programming》

TOP

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

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