Utiliser sort pour trier les colonnes d'un csv [Résolu]

Signaler
-
 mortel -
Bonjour,


J'ai un fichier dont le contenu est comme ça
LE_VAL;K1;BOULOGNE_CLEMEN;T1
LE_VAL;K2;BOULOGNE_CLEMEN;T2
LE_VAL;K3;BOULOGNE_CLEMEN;T3
LE_VAL;K4;BOULOGNE_CLEMEN;T4
LE_VAL;K5;BOULOGNE_CLEMEN;T5
LE_VAL;K1;BELLEVUE;T3
LE_VAL;;HAVRE_CAUMARTIN;Z2
ISSY_BRIAND;K3;BOULOGNE_CLEMEN;T3
LE_VAL;;PARC_DES_PRINCE;EXC
ISSY_BRIAND;K1;BELLEVUE;T1
ISSY_BRIAND;K2;BELLEVUE;T2
ISSY_BRIAND;K3;BELLEVUE;T3
ISSY_BRIAND;K4;BELLEVUE;T4
ISSY_BRIAND;K5;BELLEVUE;T5
LE_VAL;K3;BELLEVUE;T2
ISSY_BRIAND;K2;PARC_DES_PRINCE;T2

en utilisant excel, je trie la 4eme colonne puis la 2eme colonne puis la 3eme colonne puis la 1ere colonne, et j'obtiens ce que je veux c'est à dire :
ISSY_BRIAND;K1;BELLEVUE;T1
ISSY_BRIAND;K2;BELLEVUE;T2
ISSY_BRIAND;K3;BELLEVUE;T3
ISSY_BRIAND;K4;BELLEVUE;T4
ISSY_BRIAND;K5;BELLEVUE;T5
ISSY_BRIAND;K3;BOULOGNE_CLEMEN;T3
ISSY_BRIAND;K2;PARC_DES_PRINCE;T2
LE_VAL;K1;BELLEVUE;T3
LE_VAL;K3;BELLEVUE;T2
LE_VAL;K1;BOULOGNE_CLEMEN;T1
LE_VAL;K2;BOULOGNE_CLEMEN;T2
LE_VAL;K3;BOULOGNE_CLEMEN;T3
LE_VAL;K4;BOULOGNE_CLEMEN;T4
LE_VAL;K5;BOULOGNE_CLEMEN;T5
LE_VAL;;HAVRE_CAUMARTIN;Z2
LE_VAL;;PARC_DES_PRINCE;EXC

sous linux Red Hat Enterprise Linux Server release 6.10 (Santiago), j'utilise sort
sort -t';' -k4,4 -k2,2 -k3,3 -k1,1 Classeur1.csv
LE_VAL;;PARC_DES_PRINCE;EXC
ISSY_BRIAND;K1;BELLEVUE;T1
LE_VAL;K1;BOULOGNE_CLEMEN;T1
ISSY_BRIAND;K2;BELLEVUE;T2
LE_VAL;K2;BOULOGNE_CLEMEN;T2
ISSY_BRIAND;K2;PARC_DES_PRINCE;T2
LE_VAL;K3;BELLEVUE;T2
LE_VAL;K1;BELLEVUE;T3
ISSY_BRIAND;K3;BELLEVUE;T3
ISSY_BRIAND;K3;BOULOGNE_CLEMEN;T3
LE_VAL;K3;BOULOGNE_CLEMEN;T3
ISSY_BRIAND;K4;BELLEVUE;T4
LE_VAL;K4;BOULOGNE_CLEMEN;T4
ISSY_BRIAND;K5;BELLEVUE;T5
LE_VAL;K5;BOULOGNE_CLEMEN;T5
LE_VAL;;HAVRE_CAUMARTIN;Z2

sort -t';' -k4,4 Classeur1.csv | sort -t';' -b -k2,2 | sort -t';' -k3,3 #j'obtiens presque ce que je veux
ISSY_BRIAND;K1;BELLEVUE;T1
ISSY_BRIAND;K2;BELLEVUE;T2
ISSY_BRIAND;K3;BELLEVUE;T3
ISSY_BRIAND;K4;BELLEVUE;T4
ISSY_BRIAND;K5;BELLEVUE;T5
LE_VAL;K1;BELLEVUE;T3
LE_VAL;K3;BELLEVUE;T2
ISSY_BRIAND;K3;BOULOGNE_CLEMEN;T3
LE_VAL;K1;BOULOGNE_CLEMEN;T1
LE_VAL;K2;BOULOGNE_CLEMEN;T2
LE_VAL;K3;BOULOGNE_CLEMEN;T3
LE_VAL;K4;BOULOGNE_CLEMEN;T4
LE_VAL;K5;BOULOGNE_CLEMEN;T5
LE_VAL;;HAVRE_CAUMARTIN;Z2
ISSY_BRIAND;K2;PARC_DES_PRINCE;T2
LE_VAL;;PARC_DES_PRINCE;EXC

sort -t';' -k4,4 Classeur1.csv | sort -t';' -b -k2,2 | sort -t';' -k3,3 | sort -t';' -k1,1 #mais le dernier sort perturbe tout
ISSY_BRIAND;K1;BELLEVUE;T1
ISSY_BRIAND;K2;BELLEVUE;T2
ISSY_BRIAND;K2;PARC_DES_PRINCE;T2
ISSY_BRIAND;K3;BELLEVUE;T3
ISSY_BRIAND;K3;BOULOGNE_CLEMEN;T3
ISSY_BRIAND;K4;BELLEVUE;T4
ISSY_BRIAND;K5;BELLEVUE;T5
LE_VAL;;HAVRE_CAUMARTIN;Z2
LE_VAL;K1;BELLEVUE;T3
LE_VAL;K1;BOULOGNE_CLEMEN;T1
LE_VAL;K2;BOULOGNE_CLEMEN;T2
LE_VAL;K3;BELLEVUE;T2
LE_VAL;K3;BOULOGNE_CLEMEN;T3
LE_VAL;K4;BOULOGNE_CLEMEN;T4
LE_VAL;K5;BOULOGNE_CLEMEN;T5
LE_VAL;;PARC_DES_PRINCE;EXC

j'utilise mal sort ? sort fonctionne comme ça et on n'y peut rien ? une solution ?

Merci de vos lumieres

Configuration: Windows / Firefox 68.0

2 réponses

Messages postés
35852
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
28 novembre 2020
5 684
Salut,

Comme ça ?

$ sort -t';' -k1,1 -k3,3 -k2,2 fichier
ISSY_BRIAND;K1;BELLEVUE;T1
ISSY_BRIAND;K2;BELLEVUE;T2
ISSY_BRIAND;K3;BELLEVUE;T3
ISSY_BRIAND;K4;BELLEVUE;T4
ISSY_BRIAND;K5;BELLEVUE;T5
ISSY_BRIAND;K3;BOULOGNE_CLEMEN;T3
ISSY_BRIAND;K2;PARC_DES_PRINCE;T2
LE_VAL;K1;BELLEVUE;T3
LE_VAL;K3;BELLEVUE;T2
LE_VAL;K1;BOULOGNE_CLEMEN;T1
LE_VAL;K2;BOULOGNE_CLEMEN;T2
LE_VAL;K3;BOULOGNE_CLEMEN;T3
LE_VAL;K4;BOULOGNE_CLEMEN;T4
LE_VAL;K5;BOULOGNE_CLEMEN;T5
LE_VAL;;HAVRE_CAUMARTIN;Z2
LE_VAL;;PARC_DES_PRINCE;EXC


;-)
Merci

c'est exactement ça, meme si je ne comprends pas pourquoi ça marche ;-)