Como grep vários padrões de uma só vez?

2

Eu quero pegar todas as linhas que correspondem ao padrão:

  • algo
  • someplace
  • em algum lugar

de /data/rawlog.txt

Eu tentei este comando, mas falhei:

grep -e "[something|someplace|somewhere]" /data/rawlog.txt

Alguém sabe o que está errado?

    
por ariefbayu 24.06.2010 / 07:11

1 resposta

7

Primeiro, você não precisa dos parênteses. Segundo, você precisa de expressões regulares estendidas ou escapar dos canos. Um deles deve funcionar:

egrep -e "something|someplace|somewhere" /data/rawlog.txt
grep -e "something\|someplace\|somewhere" /data/rawlog.txt

Se você quiser colocar algo fora do fork, não esqueça de agrupá-lo. Por exemplo, se você quiser que esses padrões ocorram apenas no final da linha:

egrep -e "(something|someplace|somewhere)$" /data/rawlog.txt

Observe que os parênteses também precisam de egrep ou de escape.

    
por 24.06.2010 / 07:27

Tags