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
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.
Tags grep pipe regular-expression