Linux三剑客awk模式匹配

网友投稿 499 2022-11-01


Linux三剑客awk模式匹配

文章目录

​​正则匹配​​​​范围匹配​​​​特殊模式BEGIN{}和END{}​​

正则匹配

//支持扩展正则awk可以精确到某一列,某一列中包含/不包含…内容~包含,!~不包含

正则

awk正则

写法

^表示以…开头的行

某一列的开头

$3~/^oldboy/

$表示以…结尾的行

某一列的结尾

$4~/lidao$/

^$表示空行

某一列是空的 (少用)

^$

第三列以1开头的

awk -F: '$3~/^1/'

第三列以2开头的,并打印1、3和最后一列

awk -F: '$3~/^2/{print $1, $3, $NF}'

第三列以1或2开头的,并打印1、3和最后一列

awk -F: '$3~/^[12]/{print $1, $3, $NF}' /etc/passwd | column

范围匹配

写法

含义

/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}'

特殊模式BEGIN{}和END{}

模式

含义

应用场景

BEGIN{}

里面的语句会在awk读取文件前执行

1)进行简单统计计算,不涉及读取文件(常见)

2)处理文件前,添加表头(少用)

3)用来定义awk变量(少用),因为可以用-v

END{}

里面的语句会在awk读取文件后执行

1)awk进行统计,一般过程:先进行计算,最后END里面输出结果(常见)

2)awk使用数组,用于输出数组结果(常见)

END{}统计方法

统计方法

简写形式

功能

i=i+1

i++

计数,统计次数

sum=sum+???

sum += ???

求和

awk 'BEGIN{i=0}/^$/{i++}END{print i}'

使用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}' # 写语句时可以用分号隔开


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Linux三剑客sed之反向引用
下一篇:java之jvm加载器例举
相关文章

 发表评论

暂时没有评论,来抢沙发吧~