122 votes

Trouver des lignes uniques

Comment trouver les lignes uniques et supprimer tous les doublons d'un fichier ? Mon fichier d'entrée est

1
1
2
3
5
5
7
7

Je voudrais que le résultat soit :

2
3

sort file | uniq ne fera pas l'affaire. Afficher toutes les valeurs une seule fois

110voto

Lev Levitsky Points 25303

uniq a l'option dont vous avez besoin :

   -u, --unique
          only print unique lines

$ cat file.txt
1
1
2
3
5
5
7
7
$ uniq -u file.txt
2
3

37voto

kasavbere Points 2496

Utilisez comme suit :

sort < filea | uniq > fileb

25voto

octocatsup Points 251

Vous pouvez également imprimer la valeur unique de "file" à l'aide de la fonction cat en passant par la commande sort et uniq

cat file | sort | uniq -u

15voto

hychou Points 411

Alors que sort prend O(n log(n)) temps, je préfère utiliser

awk '!seen[$0]++'

awk '!seen[$0]++' est l'abréviation de awk '!seen[$0]++ {print}' , print line(=$0) if seen[$0] est différent de zéro. Il prend plus de place mais seulement O(n) temps.

13voto

blacker Points 403

Que vous pouvez utiliser :

sort data.txt| uniq -u

ceci permet de trier les données et de filtrer par valeurs uniques

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X