¿Cómo puedo seleccionar la primera aparición entre dos patrones incluyéndolos? Preferiblemente usando sed
o awk
.
tengo:
text
something P1 something
content1
content2
something P2 something
text
something P1 something
content3
content4
something P2 something
text
Quiero la primera aparición de las líneas entre P1 y P2 (incluyendo la línea P1 y la línea P2):
something P1 something
content1
content2
something P2 something
Respuesta aceptada:
sed '/P1/,/P2/!d;/P2/q'
…haría el trabajo de forma portátil por d
eliminando todas las líneas que hacen !
no cae dentro del rango, entonces q
saliendo la primera vez que se encuentra con el final del rango. No falla para P2 que precede a P1, y no requiere una sintaxis específica de GNU para escribir de forma sencilla.