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 :
- Créez un fichier nommé
numbers.txt
:
cd ~/project
echo -e "10\n5\n100\n20\n1\n50" > numbers.txt
- Affichez le contenu du fichier :
cat numbers.txt
Vous devriez voir :
10
5
100
20
1
50
- 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).
- 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.
- 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
- 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
- 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
- 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.