如何只在pcregrep中显示第一场比赛?

时间:2017-10-26 07:02:28

标签: linux grep pcregrep

我在日志文件中有xml,如下所示:

<ServiceRs>
1
</ServiceRs>
text text text
<ServiceRs>
2
</ServiceRs>
text

所以,我需要从日志文件中删除这个XML,并且我正在尝试使用:

pcregrep -M '<ServiceRs>(\n|.)*</ServiceRs>'

但在此之后我没有得到两个ServiceRs xml,我得到了这个:

<ServiceRs>
1
</ServiceRs>
text text text
<ServiceRs>
2
</ServiceRs>

我知道,我可以修改模式 - (\ n |。)* - &gt; (\ n |。){0,n),但我真的不知道xml中有多少行。

1 个答案:

答案 0 :(得分:1)

你能试试吗

pcregrep -M '<ServiceRs>(\n|.)*?</ServiceRs>'

?用于懒惰匹配

它仅匹配<ServiceRs></ServiceRs>之间的内容,并排除其他text text...

参考:https://regexr.com/3h1ug