Tri d'un fichier par rapport à un CHAR d'un champ.

Résolu
bob737 Messages postés 157 Statut Membre -  
dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   -

Bonjour,

Je cherche depuis ce matin mais je bloque. 

J'ai un fichier avec:

SERV1;SQL; SLA, DATA1

SERV2; vSphere VM; SLA; DATA2

SERV3; Windows, SLA, DATA3

SERV4; vSphere VM; SLA; DATA4

J'aimerais  trier le fichier et avoir en début de fichier toutes les lignes dans le second champs est vSphere VM

soit:

SERV2; vSphere VM; SLA; DATA2

SERV4; vSphere VM; SLA; DATA4

SERV3; Windows, SLA, DATA3

SERV1;SQL; SLA, DATA1

Merci de votre aide. 
Windows / Chrome 111.0.0.0

3 réponses

  1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     

    hellol

    $ awk -F ';' '!NF {next } $2 ~ /vSphere/ {print $0; next} {a[++n]=$0} END {for (x in a)print a[x]}' fichier 
    SERV2; vSphere VM; SLA; DATA2
    SERV4; vSphere VM; SLA; DATA4
    SERV1;SQL; SLA, DATA1
    SERV3; Windows, SLA, DATA3
    $
    3
  2. jee pee Messages postés 31886 Date d'inscription   Statut Modérateur Dernière intervention   9 981
     

    Bonjour,

    Tri signifiant ordre alpha ou numérique croissant ou décroissant ne répond pas à cette particularité de selectionner le 1er.

    On peut alors traiter les données en 2 fois :

    grep 'vSphere' fic6.txt|sort -t';' -k2 ; grep -v 'vSphere' fic6.txt|sort -t';' -k2
    
    SERV2; vSphere VM; SLA; DATA2
    SERV4; vSphere VM; SLA; DATA4
    SERV1;SQL; SLA, DATA1
    SERV3; Windows, SLA, DATA3
    

    1
  3. bob737 Messages postés 157 Statut Membre
     

    Bonjour, 

    j'avais envisagé cette possibilité mais je pensais pouvoir le faire one shot avec un awk. 

    Merci!

    0