正则表达式 – 如何在第一个匹配地址范围之后让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>跳到循环 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |