Более простое awk
решение (вида -промежуточного между ответ Ирувара и ответ Муру , но без использования переменной):
awk '/P1/,/P2/ { print } /P2/ { exit }'
и, как заметил муру, если первый P2 появится перед первым P1, это ничего не напечатает.
Конечно, если вы хотите напечатать все диапазоны P1 -P2:
something P1 something
content1
content2
something P2 something
something P1 something
content3
content4
something P2 something
просто опустите часть exit
:
awk '/P1/,/P2/ { print }'