Como posso remover duplicatas da saída da saída tshark [duplicada]

0
sudo tshark -i ppp0 'tcp port 80   \
and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'   \
-R'http.request.method == "GET" && http.request.uri contains "/ABC/XYZ"' \
-T fields -e http.host -e http.request.uri

Estou usando as linhas acima de tshark filtrando a saída com base em / ABC / XYZ. ele gera dados dinamicamente aleatórios por exemplo, como onde eu encontro linhas duplicadas exemplo:

1bcdJOSHhijklmnopqrstuvwxyz
1bcdefghijklmnopqrstuvwxyz
1bcdefghijklmnopqrstuvwxyz
3bcdefghijklmnopqrstuvwxyz
2bcdefghijklmnopqrstuvwxyz
1bcdJOSHhijklmnopqrstuvwxyz
3bcdefghijklmnopqrstuvwxyz

Existe alguma maneira de remover as duplicatas sem criar nenhum arquivo pode estar usando algum tipo de buffer ou pipe.

ou pode tshark em si fazê-lo

EDIT: Eu não tenho certeza porque, mas eu consigo o que eu quero depois de eu prefixar tshark com stdbuf -o L , como sugerido por meuh

    
por munish 02.04.2016 / 11:04

1 resposta

3

Se você tem uma condição de parada no seu tshark, você pode simplesmente enviar a saída em |sort -u . Como alternativa, canalize a saída contínua para

awk '{if(!seen[$0]++)print}'

Você pode precisar que o tshark não armazene em buffer sua stdout: tente prefixar o tshark com stdbuf -o L .

    
por 02.04.2016 / 11:28