З 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