文本处理工具AWK详解

awk简介

awk: 中文意思是报告生成器 能够根据我们输入的信息,将信息格式化以后显示,将定义好的信息以比较美观(直观)的方式显示出来出现比较早,继而出现了new awk(nawk)在windows上实现,gawk, awk实现在linux上。awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入、一个或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。它在命令行中使用,但更多是作为脚本来使用。awk的处理文本和数据的方式是这样的,它逐行扫描文件,从第一行到最后一行,寻找匹配的特定模式的行,并在这些行上进行你想要的操作。如果没有指定处理动作,则把匹配的行显示到标准输出(屏幕),如果没有指定模式,则所有被操作所指定的行都被处理。awk分别代表其作者姓氏的第一个字母,分别是Alfred Aho、Brian Kernighan、Peter Weinberger。gawk是awk的GNU版本,它提供

了Bell实验室和GNU的一些扩展。下面就对awk进行介绍。

awk使用的基本格式:

# awk [options] 'script' file1 file2, ...
# awk [options] 'PATTERN { action }' file1 file2, ...细化了上面的组合
常用的命令:print(输出), printf(打印)

awk工作过程

根据我们所定义的模式,一次从文件中读取一行文本,awk会对取出的文本做相应的切片,将每一行按照分隔符进行切割,假如我们有一行文本: this is a test.它会使用空白字符当做分隔符,将它们各个分开,切割成了四个片,分别为: this is a test.这四个片,可以使用变量,分别对应为$1,$2,$3,$4代表四个切割片,下面就做一个演示,看如何实现awk的强大功能

一、awk的输出:print

print的使用格式:
print item1, item2, ...

输出要点:

1、各项目之间使用逗号隔开,而输出时则以空白字符分隔;

2、输出的item可以为字符串或数值、当前记录的字段(如$1)、变量或awk的表达式;数值会先转换为字符串,而后再输出;

3、print命令后面的item可以省略,此时其功能相当于print $0, 因此,如果想输出空白行,则需要使用print "";

实例分析:

显示整个文本(注意,这里只是测试,所以只有一行)
#  awk '{print $N}' test.txt
this is a test.
# awk '{print $0}' test.txt
this is a test.
显示文本的一行中的第一个参数
# awk '{print $1}' test.txt
this
显示文本的一行中的第二个参数
# awk '{print $2}' test.txt
is
显示文本的一行中的第四个参数
# awk '{print $4}' test.txt
test.
显示文本的一行中的第一与第二个个参数
# awk '{print $1,$2}' test.txt
this is
显示文本的一行中的第一个与第二个参数,中间可以加#号
# awk 'BEGIN{OFS="#"}{print $1,$2}' test.txt
this#is
显示文本中的各个参数,还可以加修饰符
# awk 'BEGIN{OFS=":"}{print $1,$2,$3,$4}' test.txt
this:is:a:test.
显示文本中的参数,还可以加修饰符,还可以加字符串
#  awk 'BEGIN{OFS=":"}{print $1,"hello",$2}' test.txt
this:hello:is
输出三行,注意换行需要加\n
# awk 'BEGIN { print "line one\nline two\nline three" }'
line one
line two
line three

相关推荐