Tri de texte sous Linux

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

Le tri de texte est une compétence essentielle pour gérer et analyser efficacement les données dans les environnements Linux. La capacité d'organiser les fichiers texte dans un ordre spécifique peut améliorer considérablement la productivité lors de la manipulation de journaux (logs), de fichiers de configuration ou de tout ensemble de données basé sur du texte. Linux propose la puissante commande sort qui offre de nombreuses options pour personnaliser l'organisation de vos données.

Dans ce labo (LabEx), vous apprendrez à utiliser la commande sort de Linux pour organiser les données textuelles de diverses manières. Vous comprendrez comment trier les fichiers par ordre alphabétique, numérique et par champs spécifiques. Ces compétences de base sont inestimables pour quiconque travaille dans le traitement des données ou l'administration système dans les environnements Linux.

À la fin de ce labo (LabEx), vous serez en mesure de trier efficacement différents types de données textuelles et d'appliquer ces compétences à vos propres projets et flux de travail.

Ceci est un Guided Lab, qui fournit des instructions étape par étape pour vous aider à apprendre et à pratiquer. Suivez attentivement les instructions pour compléter chaque étape et acquérir une expérience pratique. Les données historiques montrent que c'est un laboratoire de niveau débutant avec un taux de réussite de 96%. Il a reçu un taux d'avis positifs de 100% de la part des apprenants.

Tri de texte de base avec la commande sort

La commande sort sous Linux est utilisée pour organiser les lignes de fichiers texte dans un ordre spécifique. Par défaut, elle trie les fichiers par ordre alphabétique, mais elle propose de nombreuses options pour personnaliser le comportement du tri.

Commençons par créer un simple fichier texte que nous utiliserons pour pratiquer le tri. Vous allez créer un fichier contenant une liste de langages de programmation.

  1. Tout d'abord, accédez à votre répertoire de projet :
cd ~/project
  1. Créez un nouveau fichier nommé languages.txt en utilisant la commande suivante :
echo -e "Python\nJava\nRuby\nGo\nJavaScript\nPHP\nRust\nC++\nSwift\nKotlin" > languages.txt

Cette commande crée un fichier avec 10 noms de langages de programmation, chacun sur une ligne distincte.

  1. Affichez le contenu du fichier que vous venez de créer :
cat languages.txt

Vous devriez voir la sortie suivante :

Python
Java
Ruby
Go
JavaScript
PHP
Rust
C++
Swift
Kotlin
  1. Maintenant, trions ce fichier par ordre alphabétique en utilisant la commande sort :
sort languages.txt

La sortie devrait ressembler à ceci :

C++
Go
Java
JavaScript
Kotlin
PHP
Python
Ruby
Rust
Swift

Remarquez comment les lignes sont maintenant organisées par ordre alphabétique. La commande sort lit toutes les lignes de l'entrée, les trie et affiche le résultat sur la sortie standard. Le fichier original reste inchangé.

  1. Si vous souhaitez enregistrer la sortie triée dans un nouveau fichier, vous pouvez utiliser la redirection de sortie :
sort languages.txt > sorted_languages.txt
  1. Vérifiez le contenu du nouveau fichier :
cat sorted_languages.txt

Vous devriez voir la même sortie triée que précédemment.

La commande sort propose également une option -r pour inverser l'ordre de tri. Essayons - la :

sort -r languages.txt

La sortie sera en ordre alphabétique inverse :

Swift
Rust
Ruby
Python
PHP
Kotlin
JavaScript
Java
Go
C++

Maintenant, vous avez appris l'utilisation de base de la commande sort pour le tri alphabétique.

Tri numérique et séparateurs de champ

Dans de nombreux scénarios réels, vous devrez peut - être trier des fichiers contenant des valeurs numériques ou des données avec plusieurs champs. La commande sort propose des options pour ces cas.

Tri numérique

Créons un fichier avec des valeurs numériques pour explorer le tri numérique :

  1. Créez un fichier nommé numbers.txt :
cd ~/project
echo -e "10\n5\n100\n20\n1\n50" > numbers.txt
  1. Affichez le contenu du fichier :
cat numbers.txt

Vous devriez voir :

10
5
100
20
1
50
  1. Si vous utilisez la commande sort de base sur ce fichier :
sort numbers.txt

La sortie sera :

1
10
100
20
5
50

Remarquez que ce n'est pas dans l'ordre numérique correct car sort traite chaque ligne comme du texte par défaut. La chaîne de caractères "100" vient avant "20" dans l'ordre lexicographique (dictionnaire).

  1. Pour trier numériquement, utilisez l'option -n :
sort -n numbers.txt

Maintenant, vous verrez l'ordre numérique correct :

1
5
10
20
50
100

Tri de fichiers avec plusieurs champs

Souvent, les fichiers contiennent plusieurs champs séparés par des délimiteurs tels que des virgules, des tabulations ou des espaces. La commande sort vous permet de spécifier le champ sur lequel effectuer le tri.

  1. Créez un fichier CSV (Comma - Separated Values, valeurs séparées par des virgules) avec des données d'exemple :
cd ~/project
echo -e "Name,Age,City\nAlice,28,New York\nBob,35,Los Angeles\nCarol,22,Chicago\nDavid,31,Boston\nEve,26,Seattle" > people.csv
  1. Affichez le contenu du fichier :
cat people.csv

Vous devriez voir :

Name,Age,City
Alice,28,New York
Bob,35,Los Angeles
Carol,22,Chicago
David,31,Boston
Eve,26,Seattle
  1. Pour trier ce fichier par le deuxième champ (Âge), utilisez l'option -t pour spécifier le séparateur de champ (une virgule dans ce cas) et l'option -k pour spécifier le numéro du champ :
sort -t, -k2,2n people.csv

L'option -t, définit le séparateur de champ sur la virgule, et -k2,2n indique à sort d'utiliser le deuxième champ pour le tri et de le traiter comme une valeur numérique.

La sortie devrait être :

Name,Age,City
Carol,22,Chicago
Eve,26,Seattle
Alice,28,New York
David,31,Boston
Bob,35,Los Angeles
  1. Vous pouvez également trier par le troisième champ (Ville) par ordre alphabétique :
sort -t, -k3,3 people.csv

La sortie sera :

Name,Age,City
David,31,Boston
Carol,22,Chicago
Bob,35,Los Angeles
Alice,28,New York
Eve,26,Seattle

En utilisant ces options, vous pouvez trier efficacement des fichiers avec divers formats de données selon vos besoins.

Techniques de tri avancées

Dans cette étape, nous allons explorer certaines fonctionnalités avancées de la commande sort qui peuvent vous aider à gérer des exigences de tri plus complexes.

Suppression des doublons

Parfois, vos données peuvent contenir des lignes en double que vous souhaitez éliminer. La commande sort propose l'option -u pour n'afficher que les lignes uniques.

  1. Créez un fichier avec des entrées en double :
cd ~/project
echo -e "apple\nbanana\napple\ncherry\nbanana\ndates" > fruits.txt
  1. Affichez le contenu du fichier :
cat fruits.txt

Vous devriez voir :

apple
banana
apple
cherry
banana
dates
  1. Utilisez l'option -u pour trier et supprimer les doublons :
sort -u fruits.txt

La sortie sera :

apple
banana
cherry
dates

Tri insensible à la casse

Par défaut, sort est sensible à la casse, ce qui signifie que "Apple" et "apple" sont considérés comme différents. Si vous souhaitez ignorer la casse lors du tri, utilisez l'option -f.

  1. Créez un fichier avec des entrées en casse mixte :
cd ~/project
echo -e "apple\nBanana\nApple\ncherry\nBanana\nDates" > mixed_case.txt
  1. Affichez le contenu du fichier :
cat mixed_case.txt

Vous devriez voir :

apple
Banana
Apple
cherry
Banana
Dates
  1. Triez le fichier en tenant compte de la casse (par défaut) :
sort mixed_case.txt

La sortie sera :

Apple
Banana
Banana
Dates
apple
cherry

Notez que les lettres majuscules viennent avant les minuscules dans l'ordre de tri ASCII.

  1. Triez maintenant le fichier en ignorant la casse :
sort -f mixed_case.txt

La sortie sera :

apple
Apple
Banana
Banana
cherry
Dates

Remarquez comment "apple" et "Apple" sont maintenant considérés comme identiques pour le tri.

Tri par ordre de mois

La commande sort peut également trier en fonction des noms de mois en utilisant l'option -M :

  1. Créez un fichier avec des noms de mois :
cd ~/project
echo -e "December\nFebruary\nJanuary\nMarch\nNovember\nApril" > months.txt
  1. Triez les mois dans l'ordre du calendrier :
sort -M months.txt

La sortie sera :

January
February
March
April
November
December

Vérification si un fichier est déjà trié

Vous pouvez utiliser l'option -c pour vérifier si un fichier est déjà trié sans le trier réellement :

sort -c sorted_languages.txt

Si le fichier est déjà trié, il n'y aura pas de sortie. Si ce n'est pas le cas, vous obtiendrez un message d'erreur indiquant la première ligne hors d'ordre.

Essayez avec un fichier non trié :

sort -c languages.txt

Vous devriez voir un message d'erreur comme celui - ci :

sort: languages.txt:2: disorder: Java

Ces techniques de tri avancées vous donnent plus de contrôle sur l'organisation et le traitement de vos données.

Résumé

Dans ce laboratoire, vous avez appris à utiliser la commande Linux sort pour organiser et gérer efficacement les données textuelles. Vous avez exploré diverses techniques et options de tri qui peuvent être appliquées à différents types de données.

Concepts clés abordés dans ce laboratoire :

  1. Tri alphabétique de base à l'aide de la commande sort
  2. Enregistrement de la sortie triée dans un nouveau fichier à l'aide de la redirection
  3. Tri en ordre inverse avec l'option -r
  4. Tri numérique avec l'option -n
  5. Tri de fichiers avec plusieurs champs en utilisant les options -t et -k
  6. Suppression des entrées en double avec l'option -u
  7. Tri insensible à la casse en utilisant l'option -f
  8. Tri basé sur les mois avec l'option -M
  9. Vérification si un fichier est déjà trié avec l'option -c

Ces techniques de tri sont des compétences fondamentales pour tous ceux qui travaillent avec des données textuelles dans des environnements Linux. Elles peuvent être appliquées à divers scénarios réels tels que :

  • Analyse de fichiers journaux
  • Traitement de données CSV
  • Organisation de fichiers de configuration
  • Préparation de données pour une analyse ou un traitement ultérieur

En maîtrisant ces techniques de tri, vous avez ajouté un outil précieux à votre boîte à outils de ligne de commande Linux, ce qui vous aidera à travailler plus efficacement avec les données textuelles.