С помощью 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