Как показать только первый матч в 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.
1 ответ
Решение
Ты можешь попробовать
pcregrep -M '<ServiceRs>(\n|.)*?</ServiceRs>'
?
для ленивого матча
Это соответствует только контенту между <ServiceRs>
а также </ServiceRs>
и исключает остальное text text...
s
Ссылка: https://regexr.com/3h1ug