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

前端之家收集整理的这篇文章主要介绍了正则表达式 – 如何在第一个匹配地址范围之后让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>跳到循环

猜你在找的正则表达式相关文章