Za pomocą grep
chcę wybrać wszystkie linie, które pasują do wzoru i które nie pasują do innego wzoru. Chcę móc użyć pojedynczego wywołania, grep
aby móc skorzystać z --after-context
opcji (lub --before-context
, lub --context
).
-v
nie jest tutaj wykonalne, ponieważ neguje wszystkie wzorce, które przekazuję grep
przy użyciu -e
opcji.
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