Swisslinux.org

− Le carrefour GNU/Linux en Suisse −

 

Langue

 

Le Forum

Vous n'êtes pas identifié.

#1 08 Apr 2010 12:45:14

tguillod
Prêcheu(r|se) du libre
 
Lieu: Zuerich
Date d'inscription: 23 Oct 2007
Messages: 233

Supprimer les lignes a double

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)


Make it run, make it correct, make it fast : Keep it SIMPLE

Hors ligne

 

#2 08 Apr 2010 19:26:48

jean@adimp.ch
Illuminé(e)
Lieu: Marly
Date d'inscription: 10 Mar 2005
Messages: 1228
Site web

Re: Supprimer les lignes a double

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)


--------------------------------------------------------
Jean Tinguely Awais
Ma vie sur twitter : http://www.twitter.com/tservi

Hors ligne

 

#3 08 Apr 2010 20:15:18

BOFH
Admin
Lieu: Ecublens, VD
Date d'inscription: 03 Feb 2005
Messages: 862
Site web

Re: Supprimer les lignes a double

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:

Code:

perl -n -e 'print unless $h{$_}++'

Hors ligne

 

#4 09 Apr 2010 10:27:47

tguillod
Prêcheu(r|se) du libre
 
Lieu: Zuerich
Date d'inscription: 23 Oct 2007
Messages: 233

Re: Supprimer les lignes a double

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.


Make it run, make it correct, make it fast : Keep it SIMPLE

Hors ligne

 

Pied de page des forums

Powered by FluxBB