Bonjour;
Actuellement étudiant en licence d'informatique, je bloque sur un exercice de tp Système avec la commande sort.
Pour résumer j'ai un fichier liste.txt avec des noms d'étudiants et leur numéro qui prend la forme suivante:
"EMMANUEL-EMILE CYRIL linf151"
Je dois trier dans un fichier temp les étudiants en fonction de leur numéro affiché sur la troisième colonne.
Il propose pour cela un algorithme qui consiste à trier dans un premier temps les étudiants avec un chiffre, puis en suite ceux avec deux, ect...
Pour récupérer la liste des étudiants avec un chiffre, je fais la commande grep 'linf[0-9]$' liste.txt , avec deux grep 'linf[0-9][0-9]$' liste.txt, etc...
J'ai donc voulu créer un filtre en redirigeant la sortie standard de la commande grep sur l'entrée de la commande sort mais impossible de trier les étudiants par rapport au nombre de la troisième colonne. Après avoir regardé le man sort, j'ai testé cela grep 'linf[0-9]$' liste.txt | sort -n -k 3 > temp ou encore sort -k 3n,3n. J'ai l'impression que sort avec l'option du trie numérique transforme les lettres de la troisième colonne en chiffre. Auriez vous donc une solution sachant qu'il faut utiliser sort s'il vous plaît ? J'ai vu sur internet qu'il était possible de trier par rapport aux caractères d'une colonne et non par rapport à la colonne entière mais je n'ai pas réussi en suivant les exemples du net.
Deuxième question qui me pose problème, il est indiqué dans le cours que les chaînes délimitées par ' ' annulent les significations des métacaractères sauf que pourtant la commande grep 'linf[0-9]$' fonctionne alors que les listes placées entre [ ] sont désignés comme des métacaractères du shell. Donc si vous pouviez s'il vous plaît m'éclaircir par rapport aux chaînes délimitées par des ' ' et par des " ".
Merci d'avance.
Partager