sed '/P1/,/P2/!d;/P2/q'
... iria fazer o trabalho portably por d
eleting todas as linhas que !
não estão dentro do intervalo, então q
uitting a primeira vez que encontra o fim do intervalo. Ele não falha no P2 anterior ao P1 e não requer uma sintaxe específica do GNU para escrever simplesmente.