Swisslinux.org

− The GNU/Linux crossroads in Switzerland −

 

Language

 

The Forum

You are not logged in.

#1 08 Apr 2010 12:45:14

tguillod
Prêcheu(r|se) du libre
 
From: Zuerich
Registered: 23 Oct 2007
Posts: 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 ?

Last edited by tguillod (09 Apr 2010 10:24:01)


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

Offline

 

#2 08 Apr 2010 19:26:48

jean@adimp.ch
Illuminé(e)
From: Marly
Registered: 10 Mar 2005
Posts: 1202
Website

Re: Supprimer les lignes a double

Salut,
Un truc du style ne peut pas fonctionner :
sort fichier | uniq -c
par hasard?
Meilleures salutations.
Jean.

Last edited by jean@adimp.ch (08 Apr 2010 19:27:14)


--------------------------------------------------------
Jean Tinguely Awais
Ma vie sur twitter : http://www.twitter.com/tservi
Recherche un vrai job. Toute nouvelle proposition d'emploi bienvenue et analysée: 076 227 01 32

Offline

 

#3 08 Apr 2010 20:15:18

BOFH
Admin
From: Ecublens, VD
Registered: 03 Feb 2005
Posts: 862
Website

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{$_}++'

Offline

 

#4 09 Apr 2010 10:27:47

tguillod
Prêcheu(r|se) du libre
 
From: Zuerich
Registered: 23 Oct 2007
Posts: 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

Offline

 

Board footer

Powered by FluxBB