加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式 – 如何在第一个匹配地址范围之后让sed退出?

发布时间:2020-12-14 06:28:24 所属栏目:百科 来源:网络整理
导读:我有一个文件: headertriggertext1text2triggertext5trigger...trigger... 我希望sed只匹配前两次“触发”的事件.所以我试过: sed -n '/trigger/,/trigger/p' 但是正如sed的man页面所示,它与“trigger”两行内的所有出现匹配.我希望sed在第一场比赛后退出,
我有一个文件:
header
trigger
text1
text2
trigger
text5
trigger
...
trigger
...

我希望sed只匹配前两次“触发”的事件.所以我试过:

sed -n '/trigger/,/trigger/p'

但是正如sed的man页面所示,它与“trigger”两行内的所有出现匹配.我希望sed在第一场比赛后退出,所以输出会是:

trigger
text1
text2
trigger

我该如何做到这一点?

您可以在GNU sed中使用循环:
sed -n '/trigger/{p; :loop n; p; /trigger/q; b loop}'

说明:

>当您看到第一个/ trigger /,启动一个命令块> p – 打印行>:loop – 设置一个名为loop的标签> n – 得到下一行> p – 打印行> / trigger / q – 如果该行匹配/ trigger /然后退出sed>跳到循环

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读