1、引言
AWK 是一个功能强大的文本和数据处理工具,数据可以来自一个或多个文件,也可以为其他命令的输出结果,常作为脚本使用。
2、工作原理
逐行读取文本,默认以空格或制表符为分隔符进行分隔,将分隔所得的各个字段保存到内建变量中,对比该行是否与给定的模式相匹配,并按模式或者条件执行编辑命令。
3、命令格式
awk 【选项】'模式或条件{编辑命令}' 文件1 文件2
awk -f 脚本文件 文件1 文件2
4、常见的内置变量
| 变量 | 描述 |
|---|---|
| FS | 列分隔符:指定每行文本的字段分隔符,缺省为空格或者制表位 |
| NF | 当前处理行的字段个数 |
| NR | 当前处理行的行号(序数) |
| $0 | 当前处理行的整行内容 |
| $n | 当前处理行的第n个字段(第n列) |
| FILENAME | 被处理的文件名 |
| RS | 行分隔符:将数据切割成许多条记录,一次只读入1条记录,以进行处理。预设值"\n" |
5、awk的用法示例
5.1、按行输出文本内容
5.1.1、$0的使用
5.1.2、打印区间行内容
在使用Awk的过程中,可以使用关系运算符作为"条件",用于比较数字与字符串,比如大于(>),小于(<),大于等于(>=),小于等于(<=),等于(==),不等于(!=);也可以使用逻辑运算符&&、||、!还可以进行简单的数学运算加减乘除、取余、乘方。
5.1.3、打印奇偶行
5.1.4、过滤出 IP地址
5.1.5、"//" 过滤内容的行
5.1.6、"^" 以...开头的行
5.1.7、"$" 以...结尾的行
5.2、BEGIN、END模式
5.2.1、命令格式:
awk 'BEGIN{...}; {...}; END{...}' 文件
命令操作顺序如下 :
- awk处理文本前会先执行BEGIN{...}里的命令操作
- 然后再逐行进行中间{...}中的命令操作
- 直到中间命令操作处理完整个文本后,才会执行END{...}里的命令操作