Présentation
Le sort
La commande est un outil pour trier le contenu des fichiers et imprimer le résultat dans la sortie standard. Réorganiser le contenu d'un fichier par ordre numérique ou alphabétique et organiser les informations par ordre croissant ou décroissant améliore la lisibilité.
Dans ce didacticiel, vous apprendrez à utiliser le sort
Linux commande et voir des exemples utiles.
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042505420358.png)
Prérequis
- Un système exécutant Linux.
- Accès à un terminal.
Syntaxe de tri Linux
Le sort
commande a la syntaxe suivante :
sort [options] filename
Exécution du sort
commande sans [options]
affiche le contenu du fichier et applique les règles de tri par défaut pour les paramètres régionaux actuels.
Les principales règles sont :
- Lignes commençant par un chiffre aller avant les lignes commençant par une lettre , disposées en ascendant commande (1-10).
- Les lignes commençant par des lettres sont triées par croissant ordre alphabétique (A-Z).
Par exemple, le fichier suivant comporte plusieurs lignes aléatoires :
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042505420344.png)
Exécutez sort
pour organiser le contenu du fichier de la manière par défaut :
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042505420399.png)
L'exemple ci-dessus montre comment le sort
commande organise les lignes par défaut lorsqu'aucune option n'est spécifiée.
Options de tri Linux
Spécifiez une option pour modifier le sort
règles de tri des commandes. Les options les plus utilisées sont répertoriées dans le tableau ci-dessous :
Formulaire d'option courte | Formulaire d'option longue | Description |
---|---|---|
-b | --ignore-leading-blanks | Provoque un sort pour ignorer les blancs de tête. |
-d | --dictionary-order | Provoque un sort pour ne prendre en compte que les blancs et les caractères alphanumériques. |
-f | --ignore-case | Ignore la règle de tri par défaut de la casse et remplace toutes les lettres minuscules par des majuscules avant la comparaison. |
/ | --files0-from=F | Lit l'entrée des fichiers spécifiés par NUL -noms terminés dans le F spécifié dossier. Si F est - , sort lit les noms depuis l'entrée standard. |
-M | --month-sort | Trie les lignes en fonction des mois (Jan-Déc). |
-h | --human-numeric-sort | Compare des nombres lisibles par l'homme (par exemple, 2K 1G). |
-n | --numeric-sort | Compare les données en fonction des valeurs numériques de la chaîne. |
-R | --random-sort | Trie les données selon un hachage aléatoire de clés mais regroupe les clés identiques. |
/ | --random-source=FILE | Obtient des octets aléatoires du FILE spécifié . |
-r | --reverse | Inverse les résultats de la comparaison. |
/ | --sort=WORD | Trier les données selon le WORD spécifié :numérique général -g , humain-numérique -h , mois -M , numérique -n , aléatoire -R , version -V . |
-c | --check, --check=diagnose-first | Vérifie si l'entrée est déjà triée mais ne la trie pas. |
/ | --debug | Annote la partie de la ligne utilisée pour le tri. |
-k | --key=KEYDEF | Trier les données en utilisant le KEYDEF spécifié , qui donne l'emplacement et le type de la clé. |
-m | --merge | Provoque un sort pour fusionner les fichiers déjà triés. |
-o | --output=FILE | Redirige la sortie vers FILE au lieu de l'imprimer en sortie standard. |
-t | --field-separator=SEP | Utilise le SEP spécifié séparateur au lieu d'une transition non vide à vide. |
-z | --zero-terminated | Le tri utilise NUL comme délimiteur de ligne au lieu du caractère de saut de ligne. |
/ | --help | Affiche le fichier d'aide avec la liste complète des options et quitte. |
/ | --version | Affiche la version du programme et quitte. |
Exemples de tri Linux
Vous trouverez ci-dessous des exemples d'utilisation du sort
commande pour organiser le contenu des fichiers de différentes manières.
Exemple 1 :Enregistrer la sortie dans un fichier
Le sort
La commande affiche uniquement le contenu d'un fichier après l'avoir organisé, mais elle ne modifie pas le fichier. Cependant, le -o
option permet d'enregistrer le sort
sortie de la commande dans un fichier.
Par exemple, la commande suivante trie les données dans le default.txt fichier et enregistre la sortie dans le sorted.txt fichier :
sort -o sorted.txt default.txt
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042505420489.png)
L'exécution de cat affiche le contenu du nouveau fichier.
Une autre façon d'enregistrer le sort
la sortie de la commande est de rediriger la sortie vers un fichier :
sort default.txt > sorted.txt
Exemple 2 :Vérifier le tri dans le fichier
Spécifiez le -c
option pour vérifier si le contenu d'un fichier a déjà été trié. Si le contenu est déjà trié, il n'y a pas de sortie du sort
commande.
Cependant, lorsque sort
trouve une ligne non triée, il affiche un message indiquant que la première ligne n'est pas à sa place.
Par exemple :
sort -c default.txt
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042505420494.png)
La commande génère un message indiquant le numéro et le contenu de la première ligne non triée.
Exemple 3 :Trier plusieurs fichiers
Il existe deux manières de trier plusieurs fichiers :
Triez plusieurs fichiers simultanément en spécifiant les noms de fichiers respectifs comme arguments, séparés par des espaces. Le contenu des fichiers est réuni, trié et imprimé en sortie standard.
Par exemple :
sort default1.txt default2.txt
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042505420478.png)
La commande concatène, trie et imprime le contenu des deux fichiers.
find
sortie de la commande pour sort
.
Une autre façon de trier plusieurs fichiers simultanément consiste à diriger la sortie de la commande find vers sort
et utilisez le --files0-from=
option dans le sort
commande.
Spécifiez le -print0
option dans find
pour terminer le nom du fichier par le NUL
caractère et assurez-vous que le programme lit correctement la liste de fichiers.
Par exemple :
find -name "default?.txt" -print0 | sort --files0-from=-
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042505420580.png)
L'exemple ci-dessus concatène et trie le default1.txt et default2.txt fichiers.
Exemple 4 :Trier par champs
Par défaut, sort
compare le contenu de la ligne entière et décide comment le trier. Pour comparer selon un sous-ensemble de données, spécifiez les champs à comparer à l'aide de -k
option.
Le -k
option prend la syntaxe suivante :
-k [ FStart [ .CStart ] ] [ Modifier ] [ , [ FEnd [ .Cend ] ][ Modifier ] ]
FStart
. Le début de la ligne.CStart
. La première colonne du champ.Fend
. La fin de la ligne.CEnd
. La dernière colonne du champ.
La clé de tri comprend tous les caractères commençant par le champ spécifié par le FStart
variable et la colonne spécifiée par le CStart
variable. La clé se termine par le champ spécifié par FEnd
et la colonne spécifiée par CEnd
.
Ne pas spécifier Fend
prend le dernier caractère de la ligne comme fin. Sans spécifier CEnd
, le dernier caractère du FEnd
champ est supposé.
S'il y a un espace entre les champs, sort
les considère comme des champs distincts.
Par exemple, les lignes du fichier suivant contiennent trois champs :
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042505420559.png)
Triez les données en fonction du deuxième champ en exécutant :
sort -k 2,2 school.txt
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042505420523.png)
La commande trie les données en fonction du deuxième champ et ignore le premier champ.
Exemple 5 :Trier dans l'ordre inverse
Utilisez le -r
possibilité de trier les données dans l'ordre inverse, c'est-à-dire dans l'ordre alphabétique inverse ou des nombres les plus élevés aux plus petits.
Par exemple, le fichier suivant est trié avec les règles de tri par défaut :
sort default.txt
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042505420642.png)
Spécifier le -r
l'option inverse l'ordre de tri :
sort -r default.txt
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042505420645.png)
Exemple 6 :Supprimer les entrées en double
Le -u
l'option permet de sort
pour supprimer les entrées en double d'un fichier. Par exemple, le fichier suivant a plusieurs entrées en double :
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042505420649.png)
Spécifier le -u
l'option trie les données et supprime les lignes en double :
sort -u test.txt
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042505420778.png)
Exemple 7 :Trier par mois
Spécifiez le -M
possibilité d'organiser les données en fonction des mois répertoriés dans un fichier.
Pour illustrer le tri par mois, créez un fichier rempli par la sortie de la commande ls :
ls -l > month-sorting.txt
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042505420735.png)
Trier les données de ls -l
sortie par mois en exécutant la commande suivante :
sort -Mk6 month-sorting.txt
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042505420886.png)
La commande trie le contenu du fichier en fonction du sixième champ contenant le mois de création du fichier .
Exemple 8 :Trier les données de manière aléatoire
Utilisez le -R
possibilité d'organiser les données de manière aléatoire sans appliquer de critère de tri.
Par exemple, le fichier suivant contient plusieurs lignes triées numériquement :
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042505420888.png)
Mélangez l'ordre des lignes avec la commande suivante :
sort -R ordered.txt
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042505420911.png)
La sortie montre que les données sont maintenant triées de manière aléatoire.
Exemple 9 :Spécifier un délimiteur
sort
sépare les champs sur une ligne en utilisant des espaces blancs (espaces ou tabulations) comme délimiteurs de champ. Spécifiez le -t
option pour changer le délimiteur de champ en un caractère différent.
Par exemple, le fichier suivant contient plusieurs champs, y compris le nom d'une personne, la fonction et le lieu de résidence :
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042505420991.png)
Trier le fichier par lieu de résidence sans changer le délimiteur ne fonctionne pas car certaines villes ont un espace au milieu de leur nom. L'espace fait sort
interpréter le nom de la ville comme deux champs au lieu d'un.
Remplacez le délimiteur par une virgule (,
) pour trier correctement le contenu du fichier :
sort -t, -k4 school.txt
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042505420987.png)
La modification du délimiteur produit la sortie souhaitée.
Exemple 10 :Trier une sortie de flux
Une autre façon de fournir une entrée au sort
commande est d'utiliser le tube (|
) opérateur. Passage dans sort
lui permet d'organiser la sortie d'une autre commande et, éventuellement, d'enregistrer les résultats dans un fichier.
L'exemple suivant montre comment diriger le ls
sortie de la commande dans sort
et organisez le contenu par taille de fichier :
ls -l /home/$USER | sort -nk5
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042505421093.png)
Le -nk5
les options spécifient le tri numérique dans le cinquième champ .