Como eu uso várias opções para o grep (na saída ao vivo)?

1

Por exemplo, quando faço isso

sudo tcpdump | grep -E '.dev:8888|ads' | grep -v 'adsl'

TODOS os outputs são suprimidos por algum motivo, nada é mostrado se eu acessar ads.google.com , por exemplo, ele aparece quando eu removo o grep -v , então o comando base funciona.

No entanto, se eu tentar criar um arquivo contendo:

test
test2

e grep -E 'test|test2' | grep -v 'test2' obtém minha saída desejada ( test ). Então, qual é a diferença quando está constantemente atualizando, e como eu usaria várias opções com grep para modificar a saída?

    
por DisplayName 01.04.2016 / 23:40

1 resposta

5

Você pode ter um problema com o buffer de linha aqui. Instrua tcpdump e os comandos grep intermediários para armazenar em buffer suas saídas da seguinte forma:

sudo tcpdump -l | grep --line-buffered -E '.dev:8888|ads' | grep -v 'adsl'

Veja também Desativar o buffer no tubo para obter soluções gerais quando esses comandos opções não estão disponíveis.

    
por 01.04.2016 / 23:52

Tags