
公众号:uncle39py
V1
2022/05/30阅读:27主题:默认主题
Linux awk命令
awk 处理有规律的文本(做一些格式化处理)
用法:awk 选项 '规则' 文件路径
1.选项
-F
用于指定行的分隔符,不指定则以空格分隔;每一行读进来都会按分隔符分隔成段(一段一段)
例子:以冒号分隔
awk -F: '{print $1,$3}' /etc/passwd
2.awk的内置变量
NR
存储的是当前的行号,代表当前是第几行
NF
存储的是当前行被分隔符切成了几段
$n
n是数字,比如$1
,表示当前行被切成了几段后的第一段;$2
表示第二段以此类推;不同的是$0
表示一整行
3.规则
规则分为定位+命令
定位分为:
-
行号定位(NR == 1) -
正则定位(//) 与sed的正则定位一致,看此篇
命令:大括号内填命令,比如{print $1}
例子:
awk -F: 'NR ==3{print $1,$3}' /etc/passwd #按:分隔,第三行打印第一段第三段
#以某一段来定位
awk -F: '$6~/root/{print $6}' /etc/passwd #截取第六段做正则定位,第六段有含root的行,打印第6段
awk -F: '$6!~/root/{print $6}' /etc/passwd #!代表取反
awk -F: '$1=="root"{print $0}' /etc/passwd #''里面用""
awk -F: 'NR>=1&&NR<=3&&$1=="root"{print $0}' /etc/passwd #&&代表条件与
awk -F: '{print $NF}' /etc/passwd #打印最后一段
awk -F: '{print $(NF-1)}' /etc/passwd #打印倒数第二段
4.awk支持管道
ifconfig ens33|awk -F" " 'NR==2{print $2}' #以空格分隔,注意写法
注意:以空格分隔时,无论文本中有多少个空格,都当作一个空格来分隔,如图所示

作者介绍

公众号:uncle39py
V1