如何仅显示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 |。)* – >(\ n |。){0,n),但是我真的不知道xml中有多less行。

你能试一下吗

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

? 是懒惰的比赛

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

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