Trier lignes en doublon dans un fichier.

Résolu
pcsystemd Messages postés 702 Date d'inscription   Statut Membre Dernière intervention   -  
pcsystemd Messages postés 702 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je souhaiterais pourvoir trier les lignes en doublon dans un fichier. Le trie doit se faire sur les champs 1,4,5 et 6 en excluant les champ 2 et 3. Le séparateur de champ est le pipe "|"

Dans cet exemple je souhaiterais conserver qu'une seule des lignes sans tenir compte du champ 2 et 3.

o.toto@mail.com|1111073|2012-11-12 15:38:08|0006TH|Zut|TOTO 
o.toto@mail.com|1111685|2012-11-12 19:12:02|0006TH|Zut|TOTO 


Je ne vois rien dans les man de SORT et UNIQ ui me permette cela.

Avez vous une idée?

Merci



L'accès au savoir est la première liberté que chaque homme devrait avoir.
A voir également:

4 réponses

dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
hello
$ cat a1
o.toto@mail.com|1111073|2012-11-12 15:38:08|0006TH|Zut|TOTO 
o.toto@mail.com|1111685|2012-11-12 19:12:02|0006TH|Zut|TOTO 
$ 
$ awk -F '|' '! x[$1, $4, $5, $6]++ ' a1
o.toto@mail.com|1111073|2012-11-12 15:38:08|0006TH|Zut|TOTO 
$ 
0
pcsystemd Messages postés 702 Date d'inscription   Statut Membre Dernière intervention   23
 
Merci énormément dubceck .

Si je peux abuser de votre temps, pourriez vous m'expliquer votre commande car j'aimerais comprendre surtout le
 '! x[$1, $4, $5, $6]++ '


Merci encore
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
On incremente (++) un tableau x indexé par les champs 1,4,5 et 6 du fichier.
si cette location est nulle (d'où le !) on imprime la ligne (en absence de code entre {}, l'action par défaut est print $0)
donc si x[$1, $4, $5, $6] n'est pas nul, il y a deja eu une ligne identique et on ne l'imprime pas.
0
pcsystemd Messages postés 702 Date d'inscription   Statut Membre Dernière intervention   23
 
Merci c'est clair.

Bonne soirée.
0