Classifique o piped para uniq output inesperado

0

Eu tenho um arquivo assim:

"string",192.168.1.0,,TX,192.168.1.2,,,100,0,0,10,10,10,,
"string",192.168.1.0,,TX,192.168.1.1,,,100,0,0,10,10,10,,
"string",192.168.1.0,,TX,192.168.1.4,,,100,0,0,10,10,10,,
"string",192.168.1.0,,TX,192.168.1.2,,,100,0,0,10,10,10,,

Com este comando, espero que ele puxe o segundo endereço IP e, basicamente, liste quantas vezes esse IP está listado neste arquivo.

cat originalFile.txt | awk -F "," '{print $5}' | sort | uniq -c > outputFile.txt

Isso classifica incorretamente. Eu quero que o arquivo de saída seja parecido com abaixo (organizado pela primeira coluna)

1 192.168.1.1
1 192.168.1.4
2 192.168.1.2

Eu tentei alterar a seção de classificação para

sort -n -k1

Eu acho que o problema é que eu estou classificando antes de executar o uniq, mas qualquer outro pedido parece quebrar o processo. No momento, minha correção é apenas executar dois comandos como esse.

    cat originalFile.txt | awk -F "," '{print $5}' | sort | uniq -c > outputFile1.txt
    sort -n -k1 outputFile1.txt > outputFile2.txt

Obviamente, usar um arquivo temporário para isso não é o ideal, e tenho certeza de que preciso modificá-lo e colocá-lo em uma ordem diferente. Qualquer ajuda é apreciada.

    
por trueCamelType 08.08.2014 / 18:05

1 resposta

1

Classifique para o uniq e depois classifique para o pedido final:

cat originalFile.txt | awk -F "," '{print $5}' | sort | uniq -c | sort -n
    
por 08.08.2014 / 18:13