GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo seleccionar la primera aparición entre dos patrones, incluyéndolos?

¿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.


Linux
  1. Cómo transferir archivos entre dos computadoras usando los comandos nc y pv

  2. ¿Cómo extraer registros entre dos marcas de tiempo?

  3. ¿Cómo sincronizar archivos entre dos controles remotos?

  4. ¿Cómo obtengo la diferencia entre dos fechas en bash?

  5. ¿Cómo puedo obtener palabras entre las dos primeras instancias de texto/patrón?

Cómo encontrar la diferencia entre dos directorios usando las herramientas Diff y Meld

Cómo Rsync archivos entre dos servidores Linux automáticamente

Cómo conectar y compartir datos entre dos sistemas Linux

¿Cómo puedo diferenciar dos secciones del mismo archivo?

¿Cómo bloquear todo el tráfico entre dos interfaces?

¿Cómo eliminar archivos creados entre dos veces?