Я хочу показать текст между 3 словами из текста в 1 файле:
lalala
<ticket>
BASH is awesome
BASH is awesome1
</ticket>
lalalala
<ticket>
BASH is awesome2
BASH is awesome3
texttext
</ticket>
lololo
<ticket>
awesome
BASH is awesome4
BASH is awesome5
</ticket>
lalalla
Я пробую это:
grep -Pzo '(?s)<ticket>.*\n.*awesome3.*\n.*</ticket>' file.txt
Результат:
<ticket>
BASH is awesome
BASH is awesome1
</ticket>
lalalala
<ticket>
BASH is awesome2
BASH is awesome3
texttext
</ticket>
lololo
<ticket>
awesome
BASH is awesome4
BASH is awesome5
</ticket>
Надеется:
<ticket>
BASH is awesome2
BASH is awesome3
texttext
</ticket>
решение1
Используйте следующеегрэпподход:
grep -Pzo '(?s)<ticket>[^<>]*?awesome3.*?</ticket>' file.txt
Выход:
<ticket>
BASH is awesome2
BASH is awesome3
texttext
</ticket>
*?
- нежадный модификатор