Múltiplos padrões de exclusão com grep

0

Eu gostaria de selecionar linhas que não correspondam ao padrão especificado, onde eu tenho vários padrões para excluir. Por exemplo, quero excluir as linhas que começam com as palavras-chave apple e banana :

$ grep -v '^apple' foo.txt | grep -v '^banana' -

Eu estou querendo saber se há uma maneira de fazer isso com uma expressão ou uma chamada para grep . Eu tentei o seguinte, mas eles não parecem funcionar como esperado:

$ grep -v "^apple" -v "^banana" foo.txt
$ grep -v "^(apple|banana)" foo.txt
$ grep -v "(^apple)|(^banana)" foo.txt

Qual é a maneira correta de excluir vários padrões?

    
por Alex Reynolds 12.05.2014 / 23:08

2 respostas

3

Para especificar correspondências "alternativas", você precisa incluir a opção "E" como:

$ grep -Ev "^(apple|banana)" foo.txt
$ grep -Ev "(^apple)|(^banana)" foo.txt

Qualquer versão acima deve funcionar.

    
por 12.05.2014 / 23:28
1

Você também pode especificar vários padrões com -e .

grep -e '^apple' -e '^banana' -v foo.txt

grep -e '^apple' -e '^banana' foo.txt

    
por 13.05.2014 / 00:52

Tags