Linux三剑客awk模式匹配

正则匹配

  • //支持扩展正则
  • awk可以精确到某一列,某一列中包含/不包含…内容
  • ~包含,!~不包含
正则awk正则写法
^表示以…开头的行某一列的开头$3~/^oldboy/
$表示以…结尾的行某一列的结尾$4~/lidao$/
^$表示空行某一列是空的 (少用)^$
  • 第三列以1开头的
awk -F: '$3~/^1/' /etc/passwd

在这里插入图片描述

  • 第三列以2开头的,并打印1、3和最后一列
awk -F: '$3~/^2/{print $1, $3, $NF}' /etc/passwd

在这里插入图片描述

  • 第三列以1或2开头的,并打印1、3和最后一列
awk -F: '$3~/^[12]/{print $1, $3, $NF}' /etc/passwd | column -t

在这里插入图片描述

范围匹配

写法含义
/sss/,/eee/从sss开始,到eee结束(多用)
NR==1,NR==5从第一行开始到第5行结束,类似于sed -n '1,5p'(少用)
  • 找出日志access.log中从11:02:00到11:02:30的ip地址、用户访问的URI、状态码、数据包大小

在这里插入图片描述

awk '/11:02:00/,/11:02:30/{print $1,$7,$9,$10}' access.log

特殊模式BEGIN{}和END{}

模式含义应用场景
BEGIN{}里面的语句会在awk读取文件前执行1)进行简单统计计算,不涉及读取文件(常见)
2)处理文件前,添加表头(少用)
3)用来定义awk变量(少用),因为可以用-v
END{}里面的语句会在awk读取文件后执行1)awk进行统计,一般过程:先进行计算,最后END里面输出结果(常见)
2)awk使用数组,用于输出数组结果(常见)

END{}统计方法

统计方法简写形式功能
i=i+1i++计数,统计次数
sum=sum+???sum += ???求和
awk 'BEGIN{i=0}/^$/{i++}END{print i}' /etc/services

在这里插入图片描述

使用awk求和

seq 100 | awk 'BEGIN{sum=0}{sum += $1}END{print sum}'
seq 100 | awk 'BEGIN{sum=0}{sum+=$1; print sum;}END{print sum}'     # 写语句时可以用分号隔开

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

bugcoder-9905

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

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

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

打赏作者

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

抵扣说明:

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

余额充值