目录
一、awk 介绍
1、awk 简介
在 Linux/UNIX 系统中,awk 是一个功能强大的编辑工具,逐行读取输入文本,默认以空格或tab键作为分隔符作为分隔,并按模式或者条件执行编辑命令。而awk比较倾向于将一行分成多个字段然后进行处理。AWK信息的读入也是逐行
指定的匹配模式进行查找,对符合条件的内容进行格式化输出或者过滤处理,可以在无交互
的情况下实现相当复杂的文本操作,被广泛应用于 Shell 脚本,完成各种自动化配置任务。
2、工作原理
前面提到sed 命令常用于一整行的处理而awk比较倾向于将一行分成多个字段"然后再进行处理,且默认情况下字段的分隔符为空格或tab键。awk执行结果可以通过print的功能将字段数据打印显示。
-
当读到第一行时,匹配条件,然后执行指定动作,再接着读取第二行数据处理,不会默认输出
-
如果没有定义匹配条件默认是匹配所有数据行,awk隐含循环,条件匹配多少次动作就会执行多少次
逐行读取文本,默认以空格或tab键为分隔符进行分隔,将分隔所得的各个字段保存到内建变量中,并按模式或者条件执行编辑命令。
-
sed命令常用于一整行的处理,而awk比较倾向于将一行分成多个""字段"然后再进行处理。
-
awk信息的读入也是逐行读取的,执行结果可以通过print的功能将字段数据打印显示。
-
在使用awk命令的过程中,可以使用逻辑操作符" &&“表示"与”、“||表示"或”、"!“表示非”;还可以进行简单的数学运算,如+、一、*、/、%、^分别表示加、减、乘、除、取余和乘方。
3、命令格式
awk [选项] '模式条件{操作}' 文件1 文件2 . . . .
awk -f|-v 脚本文件 文件1 文件2 . . .
#常用选项:
-F “分隔符” 指明输入时使用到的字段分隔符,默认的分隔符是若干个连续空白符
-v var=value 变量赋值
二、awk 常见的内置变量
-
FS 指定每行的字段分隔符,默认为空格或制表位(相当于选项 -F )
-
OFS 输出字段的分隔符,默认也是空格
-
NF 当前处理的行的字段个数(就是:有多少列)
-
NR 当前处理的行的行号(就是:有多少行
-
$0 当前处理的行的整行内容(就是:表示一行的内容)
-
$n 当前处理行的第n个字段(就是:第n列
-
FILENAME 被处理的文件名
-
RS 行分割符。awk从文件上读取资料时,将根据Rs的定义把资料切割成许多条记录,而awk一次仅读取一条记录,预设值是“\n“
-
ORS 输出分割符,默认也是换行符
-
FNR 读取文件的记录数(行号),从1开始,新的文件重新从1开始计数</