Trouver des lignes uniques
Comment puis-je trouver les lignes uniques et de supprimer tous les doublons d'un fichier?
Mon fichier d'entrée est
1
1
2
3
5
5
7
7
Je voudrais le resultat:
2
3
sort file | uniq
ne sera pas faire le travail. Va afficher toutes les valeurs de 1 heure
- Le fichier doit être triés d'abord.
sort file | uniq -u
sera sortie de la console pour vous.
Vous devez vous connecter pour publier un commentaire.
uniq
a l'option dont vous avez besoin:Utiliser comme suit:
uniq -u filea > fileb
sort<filea.txt | uniq>fileb.txt
. Peut-être vous laissé les extensions. Je suis sur un Mac OS X. vous devez aller defilea.txt
à certains autresfileb.txt
sort
et quel est le point de la tuyauterie pouruniq
lorsque vous pourriez fairesort -u file -o file
ce que vous êtes en train de faire est de retirer les valeurs en double je.e votrefileb
contient1,2,3,5,7
l'OP veut l'unique lignes seulement, ce qui est2,3
et est réalisé paruniq -u file
l'extension de Fichier n'a rien pour elle, votre réponse est fausse.uniq -u a été me rend fou parce qu'il n'a pas de travail.
Donc au lieu de cela, si vous avez python (la plupart des distributions Linux et des serveurs déjà):
En supposant que vous avez le fichier de données dans notUnique.txt
Noter qu'en raison des lignes vides, le dernier jeu peut contenir " ou seulement l'espace des chaînes de caractères. Vous pouvez le retirer plus tard. Ou tout simplement sortir avec copie à partir de la borne 😉
#
Juste pour info, à Partir de l'uniq Homme page:
"Note:" uniq " ne pas détecter plusieurs lignes, sauf s'ils sont adjacents. Vous pouvez trier les entrées d'abord, ou l'utilisation de tri -u' sans 'uniq'. Aussi, les comparaisons honneur les règles spécifiées par "LC_COLLATE'."
L'une des façons correctes, d'invoquer avec:
#
tri nonUnique.txt | uniq
Exemple de fonctionnement:
L'espace peuvent être imprimés, alors soyez prêt!
uniq -u < file
va faire le travail.uniq
devrait faire l'affaire si vous êtes fichier est/peut être triée, si vous ne pouvez pas trier le fichier pour une raison quelconque, vous pouvez utiliserawk
:awk '{a[$0]++}END{for(i in a)if(a[i]<2)print i}'
Vous pouvez également imprimer la valeur unique dans "fichier" à l'aide de la
cat
commande par tuyauterie àsort
etuniq
cat file | sort | uniq -u
cela a fonctionné pour moi pour un semblable. Utilisez cette option si elle n'est pas organisée.
Vous pouvez supprimer le tri si elle est organisée
Tout
sort
prend O(n log(n)) de temps, je préfère utiliserawk '!seen[$0]++'
est une abréviation pourawk '!seen[$0]++ {print}'
, la ligne d'impression(=$0) siseen[$0]
n'est pas zéro.- Il plus d'espace, mais seulement O(n) fois.
vous pouvez utiliser:
ce genre de données et filtrer par valeurs uniques
C'était la première que j'ai essayé
Après avoir fait un chat -e tous.triés
Chaque deuxième ligne dispose d'un espace de fin 🙁
Après la suppression de tous les espaces à droite il a travaillé!
merci