一张图快速帮助你学习Awk命令

一张图快速帮助你学习Awk命令

从第一个Awk命令开始

学习一种语言的最快方法就是去使用它,所以接下来要做的就是写出第一个Awk命令。

从hello world开始学习

现在开始体验地一个Awk示例:

$ awk 'BEGIN{ print "hello,world"}'
hello,world

怎么理解这段命令呢?

这是一段没有输入,只有输出"hello,world"的命令。

  1. awk 'BEGIN{ print "hello,world"}' 这段代码的awk是命令名称,后面单引号内的部分是awk要执行的程序部分。
  2. 程序部分的BEGIN成为模式,表示在awk程序执行开始时需要执行大括号内的语句块(称为动作),就是 print "hello,world" 输出。

Awk命令的语法格式

awk程序的使用语法如下:

pattern { action }

其中:
- pattern 就是模式,用来匹配查找到要处理的数据的条件规则,可以是数值判断,字符串比较,正则匹配等。
- action 就是动作,即要对 pattern 查找到的数据行进行处理的逻辑动作,例如输出找到的行数据、统计行数或者是查找是否有你的名字等等。

回顾hello,world的示例,我们可以知道 BEGINpatternprint "hello,world" 是要执行的动作
例如:

$ awk '$1 > 1 { print $0 }' datafile

这条命令的模式是$1 >1 , 动作是print $0, 而输入数据是个名为datafile的文件。

Awk两个重要的数据格式概念

既然是数据处理,就会涉及到数据格式的概念,Awk命令抽象出两个数据格式的概念: 记录字段

  1. 记录(record): 就是按记录分隔符RS分隔的数据,默认情况下一行称之为记录,因为默认记录分隔符RS为换行符(RS="\n") .
  2. 字段(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参考手册.png

转载本文时请注明出处及本文链接地址一张图快速帮助你学习Awk命令

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注