
一张图快速帮助你学习Awk命令
从第一个Awk命令开始
学习一种语言的最快方法就是去使用它,所以接下来要做的就是写出第一个Awk命令。
从hello world开始学习
现在开始体验地一个Awk
示例:
$ awk 'BEGIN{ print "hello,world"}'
hello,world
怎么理解这段命令呢?
这是一段没有输入,只有输出"hello,world"的命令。
awk 'BEGIN{ print "hello,world"}'
这段代码的awk
是命令名称,后面单引号内的部分是awk
要执行的程序部分。- 程序部分的
BEGIN
成为模式,表示在awk程序执行开始时需要执行大括号内的语句块(称为动作),就是print "hello,world"
输出。
Awk命令的语法格式
awk
程序的使用语法如下:
pattern { action }
其中:
- pattern
就是模式
,用来匹配查找到要处理的数据的条件规则,可以是数值判断,字符串比较,正则匹配等。
- action
就是动作
,即要对 pattern
查找到的数据行进行处理的逻辑动作
,例如输出找到的行数据、统计行数或者是查找是否有你的名字等等。
回顾hello,world
的示例,我们可以知道 BEGIN
是pattern
,print "hello,world"
是要执行的动作
。
例如:
$ awk '$1 > 1 { print $0 }' datafile
这条命令的模式是$1 >1
, 动作是print $0
, 而输入数据是个名为datafile
的文件。
Awk两个重要的数据格式概念
既然是数据处理,就会涉及到数据格式的概念,Awk命令抽象出两个数据格式的概念:
记录
和字段
。
记录(record)
: 就是按记录分隔符RS
分隔的数据,默认情况下一行称之为记录,因为默认记录分隔符RS
为换行符(RS="\n"
) .字段(field)
: 就是对一条记录中的数据按照字段分隔符FS
拆分的数据,默认情况下每一条记录会按照FS
(默认为空白符[ \t]+
)对内容进行分隔成 $1、$2、$3... $NF 个记录,其中内置变量NF
的值为字段数量的数值。
示例理解
$ cat datafile
1 2 3 4 5
2 3 4 5 6
3 4 5 6 7
$ awk '$1 > 1 { print $0 }' datafile
2 3 4 5 6
3 4 5 6 7
数据文件datafile
:
- 包含了
三条记录
,每一行就是一条记录,记录用内置变量$0
表示。 - 每条记录有
五个字段
,分别用内置变量$1,$2,$3,$4,$5
表示。 - 命令的意思是: 如果
datafile
中记录的第一个字段
数值大于1就输出这条记录
。
想要更加深入学习Awk
命令可以 直接在看云
平台上找到对应电子书,直接访问地址 精通Awk命令。
这里还有关于如何使用Linux系统
的电子书走进Linux的世界,
想学习网络爬虫的朋友,也可以阅读这本书《虫师的江湖》。
最后,奉上一张Awk命令参考图。
转载本文时请注明出处及本文链接地址一张图快速帮助你学习Awk命令。