líneas sed después del partido y antes del próximo partido

líneas sed después del partido y antes del próximo partido

¿Cómo hacer que todas las líneas después de una palabra coincidente lleguen a la siguiente palabra coincidente diferente?

Por ejemplo, mi entrada se ve a continuación.

1
2
3

5
6

y necesito sedde1a5y en mi salida necesito incluir1pero no quiero incluir *5*y las líneas restantes.

Si mi archivo no contiene5Necesito tener las líneas restantes hasta el final.

NOTA:Vi el enlace al que se hace referencia que parece un duplicado de mi pregunta, titulado:Mostrar solo texto entre 2 patrones coincidentespero no responde a mi pregunta. Las respuestas allí no incluían una forma de manejar si la segunda coincidencia no está en el archivo.

Respuesta1

sed '/1/,/5/!d;/5/d'

Devolvería las líneas que comienzan desde una línea que contiene 1hasta la siguiente línea después de la que contiene 5(sin incluir esa). Si no hay ninguna línea que contenga 5después de la que contiene 1, se imprimirá desde la primera línea que contiene 1hasta el final del archivo.

Tenga en cuenta que imprimirá todas las secciones correspondientes.

Si solo hay una sección, o solo te interesa la primera, otro enfoque podría ser:

sed -n '/1/,$!d; /5/q; p'

Eso significa que seddejará de leer después de encontrar un 5 en la misma línea, o después de la primera línea que contenga 1.

información relacionada