我在日志文件中有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 |。)*->(\n |。){0,n),但我真的不知道xml中会有多少行。

最佳答案

你能试一下吗
pcregrep -M '<ServiceRs>(\n|.)*?</ServiceRs>'?用于延迟匹配

它仅匹配<ServiceRs></ServiceRs>之间的内容,而排除其余text text...
引用:https://regexr.com/3h1ug

关于linux - 如何只显示pcregrep中的第一场比赛?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46947775/

10-09 17:39