linux——awk(5):awk模式(pattern)

awk的使用语法

awk[options] 'Pattern{Action}' file1,file2

对于options(选项)而言,我们使用过-F,也使用过-v

对于Action(动作)而言,我们使用过print和printf。

对于Pattern(模式)而言,我们在刚开始学习awk时,学习了BEGIN和END模式。

模式可以理解为条件。awk是逐行处理文本的,awk会先处理完当前行,再处理下一行。如果不指定任何条件,awk会依次处理所有行,如果指定了”条件“,只有满足”条件“的行才会被处理,不满足”条件“的行就不会被处理。

上述”模式“中,使用到了关系表达式(关系操作符)。当经过关系运算得出的结果为”真“时,则满足条件(表示与指定的模式匹配),满足条件就会执行相应动作。

1.正则模式

正则模式可以理解为:把”正则表达式“当作”条件“,能与正则匹配的行,就算满足条件,满足条件的行才会执行对应的动作,不能匹配到的行则不会执行对应的动作。

语法:

grep  ”正则表达式“ /etc/passwd

awk ‘/正则表达式/{print $0}’ /etc/passwd

注意:在使用正则模式时,如果正则中包含”/“,则需要进行转义。grep不需要对”/“进行转义。grep需要对”\“转义,并且需要用单引号。

此外,还需注意:

1.当awk命令中使用正则模式时候,使用到的正则用法属于”扩展正则表达式“

2.当使用{x,y}这种次数匹配的正则表达式时,需要配合--posix选项或者--re-interval选项。(我实际测试的时候,不需要--posix也成功了)

2.行范围模式

如上图所示,文件中lee和kevin都出现两次,如果想要输出从lee第一次出现的行到kevin第一次出现的行,可以使用行范围模式。如下所示:

三类模式:

1.空模式

2.关系运算模式

3.BEGIN/END模式

4.正则模式与行范围模式

 

参考:http://www.zsythink.net/archives/1426

http://www.zsythink.net/archives/2025

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值