#1 Le 21/03/2013, à 10:19
- Archonic
[Résolu] Tri d'un fichier dans les sens ascendant et descendant
Bonjour,
J'étudie actuellement le manuel "Linux essentials" fourni par Linup et que vous trouverez ici : https://www.lpi.org/exam-preparation/self-study
A la page 114, l'exercice 8.13, on me demande de trier un fichier de la manière suivante:
- Les clubs sportifs par ordre ascendant
- Au sein de ces clubs, trier les numéros par ordre descendant.
Et biensûr, à la fin du document ne figure pas la solution ... sinon, ce serait moins drôle!
Je vous copie ici le fichier de base (que vous trouverez à la page 112):
Smith:Herbert:Pantington AC:123:Men
Prowler:Desmond:Lameborough TFC:13:Men
Fleetman:Fred:Rundale Sportsters:217:Men
Jumpabout:Mike:Fairing Track Society:154:Men
de Leaping:Gwen:Fairing Track Society:26:Ladies
Runnington:Vivian:Lamborough TFC:117:Ladies
Sweat:Susan:Rundals Sportsters:93:Ladies
Runnington:Kathleen:Lamborough TFC:119:Ladies
Longshanks:Loretta:Pantington AC:55:Ladies
O'Finnan:Jack:Fairing Track Society:45:Men
Oblomovsky:Katie:Rundale Sportsters:57:Ladies
Voici la commande que je pense être la plus proche de la solution:
sort -t: -k4 -n -r participants0.dat | sort -t: -k3
Et le résultat, imparfait, que j'obtiens:
Jumpabout:Mike:Fairing Track Society:154:Men
de Leaping:Gwen:Fairing Track Society:26:Ladies
O'Finnan:Jack:Fairing Track Society:45:Men
Runnington:Vivian:Lamborough TFC:117:Ladies
Runnington:Kathleen:Lamborough TFC:119:Ladies
Prowler:Desmond:Lameborough TFC:13:Men
Smith:Herbert:Pantington AC:123:Men
Longshanks:Loretta:Pantington AC:55:Ladies
Fleetman:Fred:Rundale Sportsters:217:Men
Oblomovsky:Katie:Rundale Sportsters:57:Ladies
Sweat:Susan:Rundals Sportsters:93:Ladies
Comme vous pouvez le voir, les clubs sont effectivement triés dans le bon sens mais l'option "-n" semble avoir été oubliée dans l'aventure.
Pourriez-vous, s'il vous plait, m'aider à résoudre ce problème?
Un grand merci d'avance pour votre aide.
Dernière modification par Archonic (Le 21/03/2013, à 11:48)
Hors ligne
#2 Le 21/03/2013, à 10:55
- pingouinux
Re : [Résolu] Tri d'un fichier dans les sens ascendant et descendant
Bonjour,
Ceci semble marcher :
$ sort -t: -k4 -nr participants0.dat | sort -t: -s -k3,3
Jumpabout:Mike:Fairing Track Society:154:Men
O'Finnan:Jack:Fairing Track Society:45:Men
de Leaping:Gwen:Fairing Track Society:26:Ladies
Runnington:Kathleen:Lamborough TFC:119:Ladies
Runnington:Vivian:Lamborough TFC:117:Ladies
Prowler:Desmond:Lameborough TFC:13:Men
Smith:Herbert:Pantington AC:123:Men
Longshanks:Loretta:Pantington AC:55:Ladies
Fleetman:Fred:Rundale Sportsters:217:Men
Oblomovsky:Katie:Rundale Sportsters:57:Ladies
Sweat:Susan:Rundals Sportsters:93:Ladies
Ajouté : Il y a sans doute une faute de frappe dans le nom du dernier club
Dernière modification par pingouinux (Le 21/03/2013, à 10:56)
Hors ligne
#3 Le 21/03/2013, à 11:14
- Archonic
Re : [Résolu] Tri d'un fichier dans les sens ascendant et descendant
Bonjour,
Merci pour cette aide rapide. Effectivement, cela semble fonctionner (et j'ai corriger la faute de frappe).
J'ai fait l'essai avec "-k3,3" et un autre avec "-k3"
Les résultats ne sont pas identiques. Pourquoi faut-il préciser une colonne de fin dans ce cas-ci?
Il me semblait avoir compris que cela était nécessaire seulement lorsque les colonnes étaient séparées par des espaces et non des séparateurs ":".
Hors ligne
#4 Le 21/03/2013, à 11:16
- Watael
Re : [Résolu] Tri d'un fichier dans les sens ascendant et descendant
salut,
une seule commande suffit
sort -t':' -k3,3 -k4,4nr fichier
Connected \o/
Welcome to sHell. · eval is evil.
En ligne
#5 Le 21/03/2013, à 11:20
- pingouinux
Re : [Résolu] Tri d'un fichier dans les sens ascendant et descendant
Voir aussi Lamborough / Lameborough.
-k3 : tri à partir du 3ème champ jusqu'à la fin de la ligne
-k3,3 : tri sur le 3ème champ uniquement
Hors ligne
#6 Le 21/03/2013, à 11:22
- pingouinux
Re : [Résolu] Tri d'un fichier dans les sens ascendant et descendant
@Watael : Bien vu
Hors ligne
#7 Le 21/03/2013, à 11:41
- Archonic
Re : [Résolu] Tri d'un fichier dans les sens ascendant et descendant
Voir aussi Lamborough / Lameborough.
-k3 : tri à partir du 3ème champ jusqu'à la fin de la ligne
-k3,3 : tri sur le 3ème champ uniquement
Le fait d'indiquer le séparateur ":" ne dispense pas de cette précision : seulement telle ou telle colonne?
Pour "-k4" ça fonctionne et donne le même résultat que "-k4,4". La différence vient-elle de la présence d'espaces dans la colonne 3?
@Watael : J'avais essayé cette solution mais sans préciser "3,3" et "4,4" (donc, simplement "3" et "4") ça ne fonctionnait alors pas. Je suppose que la raison est identique à ma question des deux lignes précédentes.
Hors ligne