Egrep: contém e não contém

0
egrep -i '12-12.*\swarning' log.file | cless

O texto acima produzirá duas linhas com a data 12-12 , seguida por caracteres aleatórios, um espaço em branco e, em seguida, Warning e mais texto.

2011-12-12 textetc Warning 1234
2011-12-12 textetc Warning 5678

Desejo apenas retornar linhas que NÃO contenham 1234 no final. Estou usando o GNU grep 2.5.4.

Atualmente, esta é minha solução alternativa.

egrep -i '12-12.*\swarning' log.file > tmp.txt
egrep -i -v '1234' tmp.txt

Eu tentei canalizar o primeiro para o segundo (sem criar um arquivo), mas ele retorna demais, e está tudo errado, ou não retorna nada.

    
por r.misc 17.02.2012 / 21:44

1 resposta

2

Você precisa usar 2 grep s.

grep -i '12-12.*[[:space:]]warning' log.file | grep -v '1234$'

Como alternativa, você pode usar um awk

awk '/12-12.*[[:space:]]warning/ && ! /1234$/' log.file
    
por 17.02.2012 / 22:47