Commande sort de Linux : Tri de texte

LinuxLinuxBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire (lab), vous allez explorer la polyvalente commande sort sous Linux, un outil puissant pour organiser et classer des données textuelles. En tant qu'administrateur d'école, vous utiliserez diverses options de la commande sort pour gérer et analyser efficacement les informations sur les étudiants. Cette expérience pratique vous aidera à comprendre comment manipuler des données dans des scénarios réels à l'aide d'outils en ligne de commande Linux.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/TextProcessingGroup(["Text Processing"]) linux/TextProcessingGroup -.-> linux/sort("Text Sorting") subgraph Lab Skills linux/sort -.-> lab-219196{{"Commande sort de Linux : Tri de texte"}} end

Tri de base des noms d'étudiants

Commençons par trier une liste de noms d'étudiants par ordre alphabétique. C'est une tâche courante lors de la création de listes de classe ou de l'organisation des dossiers étudiants.

Tout d'abord, affichons le contenu de notre liste d'étudiants :

cat ~/project/students.txt

Vous devriez voir une liste de noms d'étudiants sans ordre particulier, similaire à ceci :

David Lee
Alice Johnson
Charlie Brown
Bob Smith
Eve Wilson

Maintenant, utilisons la commande sort pour organiser ces noms par ordre alphabétique :

sort ~/project/students.txt

Cette commande affichera la liste triée des noms d'étudiants sur votre écran. La sortie devrait ressembler à ceci :

Alice Johnson
Bob Smith
Charlie Brown
David Lee
Eve Wilson

Par défaut, la commande sort trie les lignes par ordre alphabétique. Elle compare les lignes caractère par caractère, en commençant par le début de chaque ligne. C'est pourquoi "Alice" vient avant "Bob", et ainsi de suite.

Si vous ne voyez aucune sortie, ne vous inquiétez pas! La commande a fonctionné, mais elle a simplement affiché le résultat dans le terminal. Si vous souhaitez enregistrer la liste triée dans un nouveau fichier, vous pouvez utiliser l'opérateur de redirection de sortie > comme ceci : sort ~/project/students.txt > ~/project/sorted_students.txt

Tri des âges des étudiants

Ensuite, nous allons trier les étudiants par leur âge. Cela peut être utile lors de l'organisation des étudiants en groupes ou activités adaptées à leur âge.

Regardons d'abord nos données :

cat ~/project/student_ages.txt

Vous verrez une liste d'étudiants avec leur âge, comme ceci :

David Lee:21
Alice Johnson:18
Charlie Brown:19
Bob Smith:20
Eve Wilson:18

Pour trier cette liste par âge, nous utiliserons l'option -n, qui indique à sort de traiter les nombres comme des valeurs numériques plutôt que comme des chaînes de caractères :

sort -n -t: -k2 ~/project/student_ages.txt

Décortiquons cette commande :

  • -n : Cette option indique à sort d'effectuer un tri numérique.
  • -t: : Cela spécifie que les champs sont séparés par des deux-points.
  • -k2 : Cela indique à sort d'utiliser le deuxième champ (l'âge) comme clé de tri.

Cela affichera la liste des étudiants triée du plus jeune au plus vieux :

Alice Johnson:18
Eve Wilson:18
Charlie Brown:19
Bob Smith:20
David Lee:21

Sans l'option -n, sort traiterait les âges comme des chaînes de caractères, ce qui entraînerait un ordre incorrect (comme 18, 19, 20, 21, 3). L'option -n garantit un tri numérique correct.

Tri inverse des notes des étudiants

Maintenant, trions les notes des étudiants par ordre décroissant. Cela est souvent utilisé pour classer les étudiants ou identifier les meilleurs performers.

Tout d'abord, affichons la liste actuelle :

cat ~/project/student_grades.txt

Vous devriez voir quelque chose comme ceci :

David Lee:87
Alice Johnson:92
Charlie Brown:95
Bob Smith:88
Eve Wilson:91

Pour trier les notes du plus élevé au plus bas, nous utiliserons l'option -r pour l'ordre inverse, ainsi que -n pour le tri numérique :

sort -nr -t: -k2 ~/project/student_grades.txt

Voici ce que chaque partie de la commande fait :

  • -n : Effectue un tri numérique
  • -r : Inverse l'ordre de tri (décroissant au lieu d'ascendant)
  • -t: : Spécifie que les champs sont séparés par des deux-points
  • -k2 : Utilise le deuxième champ (la note) comme clé de tri

Cette commande affichera les notes des étudiants du plus élevé au plus bas :

Charlie Brown:95
Alice Johnson:92
Eve Wilson:91
Bob Smith:88
David Lee:87

L'option -r est particulièrement utile lorsque vous souhaitez voir les valeurs les plus élevées en premier, ce qui est courant dans de nombreux scénarios réels tels que le classement, l'identification des meilleurs performers ou la priorisation des tâches.

Tri des dossiers étudiants par plusieurs champs

Dans cette étape, nous allons trier un dossier étudiant plus complexe qui inclut le nom, l'âge et la note. C'est un scénario courant lorsqu'on manipule des bases de données d'étudiants complètes.

Regardons d'abord nos données :

cat ~/project/student_records.txt

Vous verrez que chaque ligne contient le nom, l'âge et la note d'un étudiant, séparés par des deux-points, comme ceci :

David Lee:21:87
Alice Johnson:18:92
Charlie Brown:19:95
Bob Smith:20:88
Eve Wilson:18:91

Pour trier ce fichier par âge (deuxième champ) puis par note (troisième champ) si les âges sont identiques, nous utiliserons :

sort -t: -k2n -k3nr ~/project/student_records.txt

Voici ce que chaque partie de la commande signifie :

  • -t: spécifie que les champs sont séparés par des deux-points
  • -k2n trie en fonction du deuxième champ (âge) de manière numérique
  • -k3nr trie ensuite en fonction du troisième champ (note) de manière numérique en ordre inverse

Cela affichera les dossiers étudiants triés d'abord par âge (en ordre croissant) et ensuite par note (en ordre décroissant) lorsque les âges sont identiques :

Alice Johnson:18:92
Eve Wilson:18:91
Charlie Brown:19:95
Bob Smith:20:88
David Lee:21:87

Ce type de tri multi-clé est extrêmement utile lorsque vous devez organiser des données en fonction de plusieurs critères. Dans ce cas, nous regroupons les étudiants par âge, et au sein de chaque groupe d'âge, nous les classons par leurs notes.

Suppression des entrées en double

Parfois, les dossiers étudiants peuvent contenir des doublons, peut-être en raison d'erreurs de saisie de données ou de multiples soumissions. Apprenons à supprimer ces doublons.

Tout d'abord, regardons un fichier avec des doublons potentiels :

cat ~/project/student_clubs.txt

Vous pourriez voir quelque chose comme ceci :

Alice Johnson:Chess Club
Bob Smith:Debate Team
Charlie Brown:Chess Club
David Lee:Science Club
Eve Wilson:Debate Team
Alice Johnson:Chess Club
Bob Smith:Science Club

Pour trier cette liste et supprimer les doublons, nous utiliserons l'option -u :

sort -u ~/project/student_clubs.txt

Cette commande affichera une liste triée des adhésions uniques aux clubs étudiants :

Alice Johnson:Chess Club
Bob Smith:Debate Team
Bob Smith:Science Club
Charlie Brown:Chess Club
David Lee:Science Club
Eve Wilson:Debate Team

L'option -u indique à sort de n'afficher que le premier élément d'une série d'éléments égaux. En d'autres termes, elle supprime les lignes en double après le tri. Cela est particulièrement utile lorsque vous devez créer une liste d'entrées uniques ou lorsque vous essayez d'identifier et d'éliminer les données redondantes.

Notez que "Bob Smith" apparaît deux fois car il est membre de deux clubs différents - ces entrées ne sont pas considérées comme des doublons car l'ensemble de la ligne est différent.

Résumé

Dans ce laboratoire, vous avez appris à utiliser la commande sort pour organiser différents types de données étudiantes. Vous avez exploré plusieurs options utiles :

  • Tri alphabétique de base
  • Tri numérique avec -n
  • Tri inverse avec -r
  • Tri par plusieurs champs avec -k
  • Utilisation de séparateurs de champ personnalisés avec -t
  • Suppression des doublons avec -u

D'autres options utiles de sort incluent :

  • -f : Ignorer la casse lors du tri
  • -b : Ignorer les espaces initiaux
  • -c : Vérifier si l'entrée est déjà triée
  • -o : Écrire la sortie dans un fichier au lieu de la sortie standard

Ces compétences seront inestimables lors de la gestion et de l'analyse de données dans divers contextes professionnels, pas seulement dans le domaine de l'éducation.