С помощью grepя хочу выбрать все линии, которые соответствуют шаблону и не соответствуют другому шаблону. Я хочу иметь возможность использовать один вызов, grepчтобы я мог использовать --after-contextопцию (или --before-context, или --context).
-vздесь не является жизнеспособным, поскольку сводит на нет все шаблоны, которые я передаю при grepиспользовании -eопции.
пример
Я хочу искать соответствие строк needle, игнорируя соответствие строк ignore me, с одной строкой следующего контекста.
Вот мой входной файл:
one needle ignore me
two
three
four needle
five
Я хочу получить вывод:
four needle
five
Как видите, это наивное решение не работает:
$ cat file | grep --after-context=1 needle | grep -v 'ignore me'
two
---
four needle
five
ack