Forum Clubic

[Perl] Suppression de doublons

Bonjour,

Voilà, j’aimerais supprimer les doublons d’un fichier qui se présente sous la forme suivante:

nom1 val1 data1
nom2 val2 data2
ainsi de suite…

En fait, j’aimerais supprimer les lignes où les val sont égales (ex: si val1 = val2, on supprime la deuxième ligne)

J’ai bien éssayé un truc du genre: perl -ne ‘print unless $doublon{$_}++’ fichier mais apparamment, ça ne fonctionne que lorsque nom1 = nom2.

Merci de vos conseils.

A mon avis tu es bon pour le parsing : tu parse tes lignes, récupères nom, valeur et donnée et tu vires les doublons selon valeur. (j’ai pas fait de Perl, mais bon c’est plus de l’algo là)

Puis tu réécris les lignes ni vu ni connu.

Merci pour le conseil, c’est exactement ce que j’ai fais.

Je splitte ma ligne et je récupère trois données, nom1, val1 et data1

Je crée un tableau associatif où la clé est val1 et la valeur, je la mets à 1.

Comme cela, lorsque plus loin dans le fichier, je retrouve une val12, par exemple, qui est égale à val1, je teste donc si la valeur pour cette clé est 1 (ce qui veut dire que je l’ai déja traitée).
Ainsi, je ne parcours le fichier qu’une seule fois.

Bonjour,

je viens de tomber sur la question, et en fait, j’ai en gros le même problème. Je me demandais si ca te dérangerait soit de poster ton script, du moin la partie qui permet de supprimer les doublons. Sinon si tu peux me l’envoyé sur mon adresse mail.

Merci de me répondre.

à la poche pleine…

vous savez, il n’y a pas longtemps j’ai trouvé le programme Clone Remover. Et ça marche vraiment pour supprimer les doublons!!!:slight_smile: