目录
一、awk工具
在 Linux/UNIX 系统中,awk 是一个功能强大的编辑工具,逐行读取输入文本,并根据指定的匹配模式进行查找,对符合条件的内容进行格式化输出或者过滤处理,可以在无交互的情况下实现相当复杂的文本操作,被广泛应用于 Shell 脚本,完成各种自动化配置任务。
1、awk工作原理
当读到第一行时,匹配条件,然后执行指定动作,再接着读取第二行数据处理,不会默认输出
如果没有定义匹配条件默认时匹配所有数据行,awk隐含循环,条件匹配多少次就会执行多少次
逐行读取文本,默认以空格或tab键为分隔符进行分隔,将分隔所得的各个字段保存到内建变量中,并按模式或者条件执行编辑命令。
2、awk命令格式
awk 选项 '模式或条件{编辑指令}' 文件1文件2.... //过滤并输出文件符条件的内容
awk -f 脚本文件 文件1 文件2.... //从脚本中调用编辑指令,过滤并输出内容
3、awk内建变量
awk包含几个特殊的内建变量(可直接用)
FS: 指定每行文本的字段分隔符,默认为空格或制表位
OFS: 输出字段的分隔符
RS: 输出行分隔符
ORS: 输出行的分隔符,默认为换行符
NF: 当前处理的行的字段个数
NR: 当前处理的行的行号(序数)
$0: 当前处理的行的整行内容
$n: 当前处理行的第n个字段(第n列)
FILENAME:被处理的文件名
4、awk命令的用法
①awk '{print}' passwd.txt //输出所有内容,{print}与{print $0}等同
② awk 'NR==1,NR==3{print}' passwd.txt //输出1-3行的内容
③ awk '/^root/{print}' passwd.txt //输出以root开头的行
④ cat -n passwd.txt |awk '(NR%2==1){print}' //输出文件的奇数行
⑤cat -n passwd.txt |awk '(NR%2==0){print}' //输出文件偶数行
⑥ cat passwd.txt |awk -F: '{print $1}' //指定:为分隔符,打印第一列
总结
awk指定分隔符:-F
[ %]
-v 定义变量
awk -F '{print $1}'