Trier lignes en doublon dans un fichier.

Résolu
pcsystemd Messages postés 734 Statut Membre -  
pcsystemd Messages postés 734 Statut Membre -
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.

4 réponses

  1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    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
  2. pcsystemd Messages postés 734 Statut Membre 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
  3. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    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
  4. pcsystemd Messages postés 734 Statut Membre 23
     
    Merci c'est clair.

    Bonne soirée.
    0