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

Résolu
bob737 Messages postés 144 Date d'inscription   Statut Membre Dernière intervention   -  
dubcek Messages postés 18788 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

A voir également:

3 réponses

dubcek Messages postés 18788 Date d'inscription   Statut Contributeur Dernière intervention   5 632
 

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
jee pee Messages postés 41362 Date d'inscription   Statut Modérateur Dernière intervention   9 672
 

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
bob737 Messages postés 144 Date d'inscription   Statut Membre Dernière intervention  
 

Bonjour, 

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

Merci!

0