Trier lignes en doublon dans un fichier.

Résolu/Fermé
pcsystemd Messages postés 702 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 6 novembre 2024 - Modifié par pcsystemd le 14/11/2012 à 11:51
pcsystemd Messages postés 702 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 6 novembre 2024 - 14 nov. 2012 à 16:31
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 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 5 621
14 nov. 2012 à 13:51
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 dimanche 27 novembre 2005 Statut Membre Dernière intervention 6 novembre 2024 23
14 nov. 2012 à 16:17
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 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 5 621
14 nov. 2012 à 16:29
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 dimanche 27 novembre 2005 Statut Membre Dernière intervention 6 novembre 2024 23
14 nov. 2012 à 16:31
Merci c'est clair.

Bonne soirée.
0