Vous n'êtes pas identifié.
Salut,
J'ai un problème pour trier un ficher
Je dois supprimer les lignes présentent plusieurs fois.
Mais 'uniq -q' veut que les lignes soit triés.
Je n'ai pas le droit d'échanger l'orde des lignes.
Comment faire ?
Dernière modification par tguillod (09 Apr 2010 10:24:01)
Hors ligne
Salut,
Un truc du style ne peut pas fonctionner :
sort fichier | uniq -c
par hasard?
Meilleures salutations.
Jean.
Dernière modification par jean@adimp.ch (08 Apr 2010 19:27:14)
Hors ligne
Hello,
Il a dit qu'il ne pouvait pas changer l'ordre des lignes, donc le sort ne convient pas.
En réalité, éliminer les lignes a doubles sans les trier est une opération ambigüe. Que veux-tu qu'il se passe quand le fichier contient deux lignes identiques a deux endroits éloignés ?
Si tu veux ne pas les toucher (donc éliminer uniquement les doublons consécutifs), uniq tout seul devrait marcher. Trier les lignes en entrée n'est pas obligatoire, c'est juste qu'il ne traite que les doublons consécutifs.
Si tu veux garder uniquement la première (ou la dernière) apparition de chaque ligne, et préserver l'ordre, je ne connais pas d'outil qui le fasse comme ça, mais voila un one-liner perl qui devrait convenir:
perl -n -e 'print unless $h{$_}++'
Hors ligne
Effectivement les lignes a traiter ne sont pas consécutive.
Merci pour le script perl, je crois que c'est ce que je vais utiliser.
Hors ligne