awk连载1: awk的基本用法及原理

awk是一款很强大的文本处理工具,他把所要处理的字符串 按行 读入到内存进行分段处理。默认情况下是以空格或者tab作为分隔符,对每个分段都分配一个名字,第1部分用$1表示,第2部分用$2表示以此类推,整行内容用$0表示,具体如下图:

$1

$2

$3

...

$N

如果想对哪部分进行操作的话,直接用$n(n是数字)指定就可以了,这里的的操作一般是指print。

awk的基本语法:

awk ‘{print $n}’

举例如下:

对于一个字符串 my last name is duan 来说,使用awk对其操作的时候,首先会对这段字符进行分段如下:

my

$1

last

$2

name

$3

is

$4

duan

$5

 

如果想打印name这个词,我们看到name是属于第三部分,只要打印$3即可:

awk连载1: awk的基本用法及原理 

如果想打印第1部分和第3部分,可以用逗号隔开:

awk连载1: awk的基本用法及原理 

这里用逗号隔开的话,显示的结果是空格进行连接,如果不用逗号的话,结果是连在一起的:

awk连载1: awk的基本用法及原理 

如果想指定连接符的话,需要单独指定连接符,用双引号指定分隔符,如下:

awk连载1: awk的基本用法及原理 

如果想打印整行内容的话,可以直接打印$0即可:

awk连载1: awk的基本用法及原理 

在用awk的时候,还可以先判断要处理的这行字符串里是否存在某关键字,如果存在才执行大括号里的操作,如果不存在则忽略,用法如下:

awk ‘/关键字/{print $n}’

如果含有duan这个关键字,才开始打印$3

awk连载1: awk的基本用法及原理 

如果含有duanxx才打印,如果不含有则不操作:

awk连载1: awk的基本用法及原理 

前面讲默认分段的分隔符是空格或者tab,如果使用其他的分隔符的话,需要使用-F来指定

awk连载1: awk的基本用法及原理 

这里$3所对应的值是 name,is-duan ,因为默认使用空格或者tab作为分隔符,如果想以-作为分隔符:

awk连载1: awk的基本用法及原理 

这里duan是第二部分,总共只有2部分,所以第一条并没有打印出来什么,第二条打印了duan。

如果以逗号作为分隔符:

awk连载1: awk的基本用法及原理 

打印的第二部分为is-duan。

如果想同时以-或者逗号作为分隔符呢?可以这样写:

awk连载1: awk的基本用法及原理 

这里第2部分就是is了。

如果想同时以空格 或者-或者逗号作为分隔符呢?可以这样写:

awk连载1: awk的基本用法及原理 

分隔符空格不能出现在[]里,注意上面的写法。

相关新闻

发表回复

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

                                                                                                                                    RHCE9学习指南连载,点击阅读