Linux四剑客详解——awk

今天继续给大家介绍Linux基础知识,本文主要内容是Linux四剑客——awk。

一、awk命令简介

(一)awk命令格式

awk也是对文本内容进行处理,但是awk采用了类似于“编程”的方式,使得用户在使用时可以进行更加复杂和强大的操作。awk的命令中包括了模式和命令,awk命令在执行时,会首先扫描文本,查找匹配模式的行,并进行命令中规定的操作。相比于grep,awk可以自定义间隔符,将一行分成数个段,并以段为单位进行操作,因此,awk命令常被用于提取一些复杂输出中的关键信息。
awk命令格式如下:

awk '模式' file
awk '{动作}' file
awk '模式{动作}' file

(二)awk命令字段分割与变量

在awk命令中,使用-F参数可以指定awk字段的分割字符,如果不特别指定,则会默认使用空格。我们也可以在-F参数后面跟上中括号,里面放置多个分隔符,此时这些分隔符都会生效。如果我们使用awk命令处理/etc/passwd文件,则可以指定冒号作为分割符,此时可以更好的区分该字段中的相关内容。如
在我们完成字段分割之后,就可以使用$N(N是正整数)来表示第N个字段的值了,如果我们使用$0,则表示文本本身。除了这两个变量之外,还存在其他变量列举如下:
$NF——表示最后一列
$(NF-N)——在这里N是正整数,表示倒数第N列

(三)awk命令模式和动作

正如我在awk命令格式中介绍的,awk命令本身可以包含模式和动作,模式类似于sed和grep命令中的模式匹配,而动作则是对匹配到的信息进行处理。awk的模式和动作指定都应该包含在单引号内,其中动作还必须在大括号内。
awk的模式可以是正则表达式、比较表达式、条件表达式、算数运算符、逻辑操作符等。
正则表达式写法示例如下:

awk '/正则表达式/'

注意,正则表达式的两端必须是斜杠,“^”符号和“$”符号也可以表示匹配行首或行尾。
比较表达式则除了正常的==、!=、>、>=、<、<=外,还可以有~,即表示相似,如果使用~,则表示匹配前面或者后面的字符串是否是另一个字符串的子串。
其余的算数表达式、逻辑表达式,就与其他的编写方式类似,在这里就不过多介绍了。
awk命令的动作,在大括号中要使用分号隔开,除了可以正常的出现在大括号中外,还可以使用BEGIN和END关键字使部分命令在大括号中的命令指行之前和执行之后进行。

二、awk命令示例

为了使得大家对awk命令理解更为深刻,在这里我仅列举部分awk命令示例如下:

date | awk '{print "Month:" $2 ";Year:" $6}'
awk '{print "User:" $1 ";Group:" $5}' /etc/passwd
awk -F : '$3>1 && $3<1000{print "User:" $1 ";Group:" $5}' 
awk -F : 'NR >=2 NR <=4{[print "User:" $1 ";Group" $5}'
awk -F : '{if ($3 >1 && $3 <1000){count++}}END{print count}'
awk -F: '{shells[$NF]++}END{ for(i in shells){print i,shells[i]}}' /etc/passwd
ipconfg | awk '$1=="inte"{print $2}'

在上述命令中,第一条命令可以查看当前的月份和年份,第二条命令可以查看当前系统的所有用户和组,第三条命令是在第二步的基础上,查看系统用户,第四条命令是打印/etc/passwd文件中第二行到第四行的用户和组信息,第五条命令是统计系统中的系统用户数量,第六条是分类统计/etc/passwd中的bash环境,第七条是提取ifconfig命令输出的IP地址信息。
上述命令执行结果如下所示:
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

永远是少年啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值