Awk命令的操作部分被括在花括号内。如果未指定操作,则匹配到模式时,awk会采取默认操作,即在屏幕上打印包含模式的行。Print函数用于打印不需要特别编排格式的简单输出。如果需要复杂的格式输出要使用printf和sprintf函数。
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命令输出的数据通过管道传给awk,awk以输入分隔符为“= ()”,一个等于号,一个空白符,一个左小括号,一个右小括号,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个字段。
|