Bonjour,
J'ai un fichier texte avec 5000 lignes dont beaucoup sont en double ou triple.
J'aimerai ne garder qu'une seule occurrence de chaque lignes.
J'ai essayé avec sort | uniq -u mais il supprime toute les occurrences des lignes en doublon.
Savez vous comment je peux faire pour ne conserver que une seule ligne?
Merci
# -u
Posté par mrlem (site web personnel) . Évalué à 5.
-u ne garde que les lignes qui ne sont pas dupliquées.
N'utilise juste pas -u
[^] # Re: -u
Posté par Orwell . Évalué à 3.
Merci.
Parfait
# en francais dans le texte
Posté par NeoX . Évalué à 5.
donc supprimer les doublons pour les coller sur une seule ligne
c'est exactement ce que tu demandes à ta ligne, tu demandes à la commande uniq
de ne garder que les lignes qui sont unique via l'option -u fait la ligne
sans cette option cela doit fonctionner parfaitement
soit un fichier
sort lefichier
renvoiesort -u le fichier
ousort lefichier | uniq
renvoient tous les deux# sort tout seul
Posté par 🚲 Tanguy Ortolo (site web personnel) . Évalué à 7.
Comme mentionné plus haut, un
sort | uniq
fera l'affaire. Mais cette idée du-u
, je gage que tu ne la sors pas de nulle part : c'est également une option desort
, tout à fait appropriée pour ton cas, parce qu'elle lui demande de faire aussi le boulot deuniq
. Autrement dit, ces deux commandes sont équivalentes :[^] # Re: sort tout seul
Posté par gaaaaaAab . Évalué à 6.
Histoire de pinailler un peu, les deux commandes sont fonctionnellement équivalentes, mais à choisir, je prendrais toujours le "sort -u". Il me parait préférable d'utiliser une seule commande au lieu de deux : un fork en moins, et une gestion d'erreur plus facile si on décide d'en faire. Sur un script utiliser une fois, on s'en fout un peu, mais si ça doit atterrir dans un truc lancé régulièrement, c'est bien d'avoir ces considérations en tête.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.