Bravo Seledad_001. Ton script m'a fait découvrir sort encore un peu mieux. Cependant, je crois que le tri que tu effectues n'est pas correct, si je m'en réfère à ce que tu as énoncé au début de ce fil: Il faut trier d'abord suivant les noms (7e au 11e caractères dans l'exemple que tu as donné), et s'il y a des noms identiques, il faut trier avec les chiffres (1er et deuxième uniquement).
Il y a deux notations pour désigner les champs dans sort. Celle que je préfère est de loin celle-ci:
-k 1.7,1.12: trier dans le premier champ (en fait il n'y a qu'un seul champ: toute la ligne) du 7e caractère (inclus) au 12e (exclu!), c'est-à-dire au 11e (inclus).
Code : Sélectionner tout - Visualiser dans une fenêtre à part sort -k 1.7,1.12 -k 1.1,1.3
-k 1.1,1.3: même chose pour le second tri, premier et second caractère. Ici nous pouvons garder le tri alphabétique puisqu'il y aura toujours deux chiffres.
Autre chose: il n'est pas toujours nécessaire de faire un cat fichier pour en donner la sortie à la commande suivante: souvent cette commande accepte directement de lire le fichier. Et c'est même plus rapide!
Tu pourras vérifier avec les fichiers:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 head -1 fichier_source > fichier_cible sed -e '1d;$d' fichier_source | sort -k 1.7,1.12 -k 1.1,1.3 >> fichier_cible tail -1 fichier_source >> fichier_cible
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 fichier_source: 10XXX20080808 225520JULES 125520JULIE 215520JULIA 223123CESAR 313123CESAR 214123CESAR 99000000784 fichier_cible: 10XXX20080808 214123CESAR 223123CESAR 313123CESAR 225520JULES 215520JULIA 125520JULIE 99000000784
Partager