Com grep
, desejo selecionar todas as linhas que correspondam a um padrão e que não correspondam a outro padrão. Quero poder usar uma única invocação de grep
para poder usar a --after-context
opção (ou --before-context
, ou --context
).
-v
não é viável aqui, pois nega todos os padrões que passo ao grep
usar a -e
opção
Exemplo
Quero procurar linhas correspondentes needle
, ignorando as linhas correspondentes ignore me
, com uma linha do seguinte contexto.
Aqui está o meu arquivo de entrada:
one needle ignore me
two
three
four needle
five
A saída que eu quero é:
four needle
five
Como você pode ver, esta solução ingênua não funciona:
$ cat file | grep --after-context=1 needle | grep -v 'ignore me'
two
---
four needle
five
ack