Linux技巧:awk 命令简单入门介绍( 三 )


具体举例如下:
$ echo "clang/utils/analyzer/" | awk -F '/' '{print $1, $2}'clang utils$ echo "clang/utils/analyzer/" | awk -F '/' '{print "Last word is: " $NF}'Last word is: 可以看到,使用 -F '/' 指定分割字符后,所给内容会以 / 来进行拆分,拆分后的单词不包含 ‘/’ 这个字符 。
由于所给内容的最后一个字符是 ‘/’,最后一列拆分后的内容为空,所以 $NF 的内容为空 。
当需要基于特定字符分割行内容时,使用 awk 命令特别实用,-F 选项可以指定分割字符,然后用 $number 就能获取到第 number 列的内容,方便处理 。
print 语句前面的例子都用了 print 语句来打印内容 。
GNU gawk 在线帮助手册对 print 语句的说明如下:

Use the print statement to produce output with simple, standardized formatting.
You specify only the strings or numbers to print, in a list separated by commas.
They are output, separated by single spaces, followed by a newline.
The statement looks like this:
print item1, item2, …
 
The entire list of items may be optionally enclosed in parentheses.
The simple statement ‘print’ with no items is equivalent to ‘print $0’: it prints the entire current record.
即,print 语句打印所给字符串、或者数字的内容,不同内容之间要用逗号 ‘,' 隔开,但是打印出来的效果是用空格隔开 。
经过测试,如果用其他字符隔开会不生效,打印的内容会连在一起 。具体举例说明如下:
$ awk '/test/ {print $3, $5}' testawka string.$ awk '/test/ {print $3 $5}' testawkastring.$ awk '/test/ {print $3_$5}' testawkastring.可以看到,在 print 后面写为 $3, $5 时,打印的两个字符串用空格隔开,而写为 $3 $5、或者 $3_$5,打印的两个字符串直接连在一起,没有打印所给的空格、或者下划线 ‘_’ 。即,只能用逗号来隔开 。
如果在 print 后面没有提供参数,默认相当于 print $0,会打印整行内容 。如果没有提供任何 action 参数,连大括号 {} 都不提供,默认相当于 { print $0 } 。如果只提供大括号 {},大括号里面没有内容,则是空操作,什么都不做 。
具体举例如下:
$ awk '/test/ {print}' testawkThis is a test string.$ awk '/test/' testawkThis is a test string.$ awk '/test/ {}' testawk可以看到,awk '/test/ {print}' testawk 命令在 print 后面提供参数,打印出整行内容 。
awk '/test/' testawk 命令没有提供 action 参数,也是打印出整行内容 。
awk '/test/ {}' testawk 命令提供了 action 参数,只是没有指定要做的操作,什么都没有打印 。




推荐阅读