Con grep, quiero seleccionar todas las líneas que coinciden con un patrón, y que no coinciden con otro patrón. Quiero poder usar una sola invocación de greppara poder usar la --after-contextopción (o --before-context, o --context).
-vno es viable aquí, ya que niega todos los patrones que paso al grepusar la -eopción.
Ejemplo
Quiero buscar líneas coincidentes needle, ignorando líneas coincidentes ignore me, con una línea de contexto siguiente.
Aquí está mi archivo de entrada:
one needle ignore me
two
three
four needle
five
La salida que quiero es:
four needle
five
Como puede ver, esta solución ingenua no funciona:
$ cat file | grep --after-context=1 needle | grep -v 'ignore me'
two
---
four needle
five
ack