目录
7.1、在打印之前定义字段分隔符为冒号 7.2、OFS定义了输出时以什么分隔
7.4、RS:指定以什么为换行符,这里指定是冒号,你指定的肯定是原文里存在的字符
8.2、 调用函数getline,读取一行数据的时候并不是得到当前行而是当前行的下一行
1、前言
AWK 是一种处理文本文件的语言,是一个强大的文本分析工具。它是专门为文本处理设计的编程语言,也是行处理软件,通常用于扫描、过滤、统计汇总工作。数据可以来自标准输入也可以是管道或文件。20世纪70年代诞生于贝尔实验室,现在centos7用的是gawk。之所以叫 AWK 是因为其取了三位创始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的 Family Name 的首字符。
2、awk工作原理
逐行读取文本,默认以空格或tab键为分隔符进行分隔,将分隔所得的各个字段保存到内建变量中,并按模式或者条件执行编辑命令。
sed命令常用于一整行的处理,而awk比较、倾向于将一行分成多个""字段"然后再进行处理。
awk信息的读入也是逐行读取的,执行结果可以通过print的功能将字段数据打印显示。
在使用awk命令的过程中,可以使用逻辑操作符"
&&“表示"与”、“||表示"或”、"!“表示非”;还可以进行简单的数学运算,如+、一、*、/、%、^分别表示加、减、乘、除、取余和乘方。
3、常见的内置变量
参数 | 含义 |
---|---|
FS | 指定每行文本的字段分隔符,默认为空格或制表位 |
NF | 当前处理的行的字段个数 |
NR | 当前处理的行的行号(序数) |
$0 | 当前处理的行的整行内容 |
$n | 当前处理行的第 n 个字段(第 n 列) |
FILENAME | 被处理的文件名 |
RS | 行分隔符 |
4、awk常用的内置变量
命令 | 含义 |
---|---|
$1 | 代表第一列 |
$2 | 代表第二列以此类推 |
$0 | 代表整行 |
NF | 一行的列数 |
NR | 行数 |
4.1、打印包含root的行的第一列和第六列
4.2、以:/为分割,打印包含root的行数
4.3、显示行号和每行的内容
4.4、打印有几行几列
4.5、打印第二行
5、awk的运算
5.1示例
5.2、模糊匹配
5.3、数值与字符串的比较
6、逻辑运算&& ||
7、其他内置变量
变量名 | 含义 |
---|---|
FS | 输入字段的分隔符 默认是空格 |
OFS | 输出字段的分隔符 默认也是空格 |
FNR | 读取文件的记录数(行号),从1开始,新的文件重新重1开始计数 |
RS | 输入行分隔符 默认为换行符 |
ORS | 输出行分隔符 默认也是为换行符 |
7.1、在打印之前定义字段分隔符为冒号
7.2、OFS定义了输出时以什么分隔
7.3、FNR的行号在追加当有多个文件时
7.4、RS:指定以什么为换行符,这里指定是冒号,你指定的肯定是原文里存在的字符
8、awk高级用法
8.1、定义引用变量
8.2、 调用函数getline,读取一行数据的时候并不是得到当前行而是当前行的下一行
8.3、显示奇偶数行
9、if语句:awk的if语句也分为单分支、双分支和多分支
10、总结
awk真好用