Tri d'un fichier

Résolu
chriseb.f Messages postés 9 Statut Membre -  
dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
je cherche une ligne de commande en linux/unix simple pour trier mon fichier en fonction de la date et de l'heure.
Il y a plusieurs champs dans le fichier. Ils sont séparé par |

Exemple du fichier à trier:
7315|PCOL|SVN2|ALL|PI_AR|31/12/2014|12:02:14|
7315|PCOL|SVN2|ALL|PL_KO|31/12/2014|05:15:54|
7315|PCOL|SVN2|ALL|PL_OK|02/03/2015|05:02:14|
7315|PCOL|SVN2|ALL|EV_OK|18/01/2015|15:02:14|

Merci pour votre aide

3 réponses

  1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
     
    Salut,

    Tu as regardé la commande sort (man sort) ?
    0
  2. chriseb.f Messages postés 9 Statut Membre
     
    oui mais je me perds un peu dans les options
    0
    1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      • -n pour un tri numérique
      • -t '|' pour indiquer le séparateur de champs
      • -k x,y pour indiquer l'intervale de champs à prendre en compte
      0
      1. chriseb.f Messages postés 9 Statut Membre > zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention  
         
        Effectivement ceux sont les options possibles mais il faut bien les définir.
        et ce n'est pas évident.
        0
      2. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501 > chriseb.f Messages postés 9 Statut Membre
         
        En fait ce sont juste les options dont tu as besoin pour ton cas et tout ce qu'il te reste à faire c'est de remplacer x et y par les bons numéros de champs ;-)
        0
      3. chriseb.f Messages postés 9 Statut Membre > zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention  
         
        il faut considérer 2 séparateurs de champ | et / ..voir même :
        et la ça ce complique une peu ;-)
        crois j'ai essayé plusieurs solutions
        0
      4. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501 > chriseb.f Messages postés 9 Statut Membre
         
        Mais pourquoi considérer plusieurs champs ?
        Avec -n le tri est fait sur les nombres, peu importe ce qui se trouve entre !

        Voilà la sortie de ton fichier trié :
        7315|PCOL|SVN2|ALL|PL_KO|31/12/2014|05:15:54|
        7315|PCOL|SVN2|ALL|PI_AR|31/12/2014|12:02:14|
        7315|PCOL|SVN2|ALL|EV_OK|18/01/2015|15:02:14|
        7315|PCOL|SVN2|ALL|PL_OK|02/03/2015|05:02:14|
        0
  3. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    hello
    essayer
    $ sort -t "|" -n -k 6.7,6.10 -k 6.4,6.5 -k 6.1,6.2 -k 7.1,7.2 -k 7.4,7.5 -k 7.7,7.8 fichier
    7315|PCOL|SVN2|ALL|PL_KO|31/12/2014|05:15:54|
    7315|PCOL|SVN2|ALL|PI_AR|31/12/2014|12:02:14|
    7315|PCOL|SVN2|ALL|EV_OK|18/01/2015|15:02:14|
    7315|PCOL|SVN2|ALL|PL_OK|02/03/2015|05:02:14|
    0
    1. chriseb.f Messages postés 9 Statut Membre
       
      génial
      Merci bcp
      0
    2. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      Salut dubcek,

      Ma sortie au-dessus a été obtenu juste avec
      sort -t'|' -nr -k 6,7
      ;-)
      0
    3. chriseb.f Messages postés 9 Statut Membre > zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention  
       
      désolé j'ai testé ça marche pas.
      merci qd même
      0
    4. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
       
      pourquoi faire simple quand on peut faire compliqué ...
      0
    5. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501 > dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention  
       
      C'est la devise de l'administration française ;-)
      0