Contar valores distintos de um campo em um arquivo

11

Eu tenho um arquivo contém cerca de um milhão de linhas. Nas linhas tenho um campo chamado transactionid , que possui valores repetitivos. O que eu preciso fazer é contá-los distintamente.

Não importa quantas vezes um valor seja repetido, ele deve ser contado apenas uma vez.

    
por Olgun Kaya 11.01.2012 / 15:08

3 respostas

17

OK, Supondo que seu arquivo seja um arquivo de texto, com os campos separados por separador de vírgula ','. Você também saberá qual campo 'transactionid' está em termos de sua posição. Supondo que seu campo 'transactionid' seja o 7º campo.

awk -F ',' '{print $7}' text_file | sort | uniq -c

Isso contaria as ocorrências distintas / únicas no sétimo campo e imprime o resultado.

    
por 11.01.2012 / 15:21
3

Não há necessidade de classificar o arquivo. ( uniq requer que o arquivo seja classificado)
Este script awk assume que o campo é o primeiro campo delimitado por espaço em branco.

awk 'a[$1] == "" { a[$1]="X" } END { print length(a) }' file 
    
por 11.01.2012 / 15:30
2

Talvez não seja o método mais elegante, mas isso deve funcionar:

awk '{print $1}' your_file | sort | uniq | wc -l

em que $1 é o número correspondente ao campo a ser analisado.

    
por 11.01.2012 / 15:18