Eliminar líneas x después de una coincidencia

¿Cómo puedo usar sed para eliminar las líneas dos (o cualquier número) después de una coincidencia pero sin include la coincidencia y las líneas intermedias?

Por ejemplo:

 Enter command below > login Command valid Enter your password at the below prompt Remember to make sure no-one is looking at your screen > mysecretword Password accepted 

Solo quiero borrar la línea "> mysecretword" por ser dos líneas después de la línea "Ingrese su contraseña en el siguiente post". No puedo usar posiciones absolutas de número de línea, porque la coincidencia podría aparecer en cualquier cantidad de líneas después del inicio del file.

Buscando en línea, encuentro muchas soluciones como sed '/Enter your password.*/,+3d' filex , pero esto también eliminaría la línea "Ingrese su contraseña …" y la siguiente línea, que no es lo que quiero . Solo quiero eliminar una línea, que es una cierta cantidad de líneas después de una coincidencia.

¿Cómo puedo hacer esto con sed (o de hecho con cualquier otra herramienta comúnmente disponible)?

Quizás

 sed '/^Enter your password/ { n n d }' file 

o equivalente:

 $ sed '/^Enter your password/ {n;n;d;}' file Enter command below > login Command valid Enter your password at the below prompt Remember to make sure no-one is looking at your screen Password accepted 

Para casos generics, vea esta excelente respuesta de Ed Morton: Imprima con sed o awk una línea siguiendo un patrón coincidente .

d) Imprima todos los loggings, excepto el N-ésimo logging después de algunos regexp:

 awk 'c&&!--c{next}/regexp/{c=N}1' file 

Solicitar la input dada

 $ awk 'c && !--c{next} /^Enter your password/{c=2} 1' ip.txt Enter command below > login Command valid Enter your password at the below prompt Remember to make sure no-one is looking at your screen Password accepted 
  • /^Enter your password/{c=2} 1 aquí c es la enésima línea después de la coincidencia que se va a ignorar, 1 para imprimir el logging de input
  • c && !--c{next} el operador && es cortocircuito, por lo que siempre que c evalúe como falso, c no se networkingucirá. Después de que c se establece en un valor, se networkingucirá siempre que no scope 0
 sed '/Enter your password.*/{N;p;N;d;}' file