Za pomocą grepchcę wybrać wszystkie linie, które pasują do wzoru i które nie pasują do innego wzoru. Chcę móc użyć pojedynczego wywołania, grepaby móc skorzystać z --after-contextopcji (lub --before-context, lub --context).
-vnie jest tutaj wykonalne, ponieważ neguje wszystkie wzorce, które przekazuję grepprzy użyciu -eopcji.
Przykład
Chcę szukać pasujących linii needle, ignorując pasujące linie ignore me, z jedną linią następującego kontekstu.
Oto mój plik wejściowy:
one needle ignore me
two
three
four needle
five
Dane wyjściowe, których chcę, to:
four needle
five
Jak widać, to naiwne rozwiązanie nie działa:
$ cat file | grep --after-context=1 needle | grep -v 'ignore me'
two
---
four needle
five
ack