Como especificar mais de uma string para ignorar (comando grep)

0

Estou usando o grep para filtrar diretórios dos quais não estou interessado:

svn stat | grep -v data/charts | grep -v lib/model | grep -v web/pics

Parece um pouco "hacky". Existe uma maneira melhor de especificar mais de uma string para ignorar, para que eu não tenha que encadear vários comandos do grep?

    
por morpheous 28.07.2010 / 14:07

3 respostas

2

Você pode fazer svn stat | grep -vE 'data/charts|lib/model|web/pics'

Você também pode estar interessado em ver grep -x . ack pode ser outra ferramenta de seu interesse.

    
por 28.07.2010 / 15:14
2

Você pode usar o disjuction com o grep. É o símbolo pipe como em muitas expressões regulares, mas você tem que fugir dele, já que o bash interpreta como um pipe real. Tente isto:

svn stat | grep -v data/charts\|lib/model\|web/pics
    
por 28.07.2010 / 14:20
2

Ou use grep -f e coloque a lista de padrões em um arquivo. (Isso é mais conveniente se a lista de coisas é razoavelmente constante, é claro). O grep -vf funciona bem, e inverte o sentido da correspondência exatamente como o grep -v normal. Apenas certifique-se de não ter linhas em branco no arquivo cheio de padrões, porque eles corresponderão a tudo!

    
por 28.07.2010 / 16:45