公众号:uncle39py

V1

2022/05/30阅读:27主题:默认主题

Linux awk命令

awk 处理有规律的文本(做一些格式化处理)

用法:awk 选项 '规则' 文件路径

1.选项

-F用于指定行的分隔符,不指定则以空格分隔;每一行读进来都会按分隔符分隔成段(一段一段)

例子:以冒号分隔
awk -F: '{print $1,$3}' /etc/passwd

2.awk的内置变量

NR存储的是当前的行号,代表当前是第几行

NF存储的是当前行被分隔符切成了几段

$nn是数字,比如$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