sed – Cómo seleccionar la primera aparición entre dos patrones incluidos

Pregunta:

¿Cómo puedo seleccionar la primera aparición entre dos patrones incluidos? Preferiblemente usando sed o awk .

Yo 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 (incluida la línea P1 y la línea P2):

something P1 something
content1
content2
something P2 something

Respuesta:

sed '/P1/,/P2/!d;/P2/q'

… haría el trabajo portable por d eleting todas las líneas que hacen ! no caer dentro del intervalo, entonces q uitting la primera vez que se encuentra con el extremo de la gama. No falla para P2 que precede a P1, y no requiere una sintaxis específica de GNU para escribir simplemente.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top

web tasarım