web-dev-qa-db-fra.com

Compter des valeurs distinctes d'un champ dans un fichier

J'ai un fichier contient environ un million de lignes. Dans les lignes, j'ai un champ appelé transactionid, qui a des valeurs répétitives. Ce que je dois faire, c'est de les compter distinctement.

Peu importe combien de fois une valeur est répétée, il ne doit être compté qu'une seule fois.

17
Olgun Kaya

OK, en supposant que votre fichier est un fichier texte, que les champs soient séparés par des virgules ",". Vous sauriez aussi quel champ 'transactionid' est en termes de sa position. En supposant que votre 'transactionid' Le champ est le 7ème champ.

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

Cela compterait les occurrences distinctes/uniques dans le 7ème champ et imprime le résultat.

26
Nikhil Mulley

Peut-être pas la méthode la plus élégante, mais cela devrait fonctionner:

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

$1 est le nombre correspondant au champ à analyser.

3
user13742

Il n'est pas nécessaire de trier le fichier .. (uniq nécessite le tri du fichier)
[.____] Ce script AWK suppose que le champ est le premier champ délimiité de WhitSpace.

awk 'a[$1] == "" { a[$1]="X" } END { print length(a) }' file 
3
Peter.O