sort
100%

Text-Fu · Leçon 12

sort

Apprenez à ordonner des lignes selon leur valeur lexicale, numérique ou celle d'un champ choisi.

sort lit des lignes complètes, les ordonne selon les règles choisies et écrit le résultat sur stdout. Il ne modifie pas l'entrée sans opération de sortie explicite.

Trier des lignes complètes

Avec animals.txt :

dog
cow
cat
elephant
bird
$ sort animals.txt
bird
cat
cow
dog
elephant

L'ordre dépend de la locale, qui influe sur la casse, les accents et la ponctuation. Pour une collation reproductible par octets :

$ LC_ALL=C sort animals.txt

Que fait sort animals.txt sans option de clé ou numérique ?

Inverser le résultat

$ sort -r animals.txt
elephant
dog
cow
cat
bird

Quelle commande trie animals.txt dans l'ordre inverse ?

Comparer des nombres

L'ordre lexical place normalement 10 avant 2. Utilisez -n :

$ printf '10\n2\n30\n' | sort -n
2
10
30

sort -nr scores.txt combine comparaison numérique et ordre décroissant.

Quelle commande trie les lignes numériques de scores.txt de la plus grande à la plus petite ?

Trier selon un champ

-k START[,END] choisit une clé. Les champs sont séparés par des blancs, sauf délimiteur défini avec -t :

$ printf 'alice:30\nbob:8\ncarol:20\n' | sort -t ':' -k 2,2n
bob:8
carol:20
alice:30

-t ':' définit les champs, -k 2,2 borne la clé au deuxième et n la compare numériquement. Sans ,2, une clé commençant au champ 2 continue normalement jusqu'à la fin.

Quelle commande trie users.txt numériquement selon son seul deuxième champ séparé par : ?

Supprimer les doublons et enregistrer la sortie

-u ne produit qu'une ligne pour chaque clé de comparaison égale :

$ sort -u names.txt

Cette forme trie et supprime les doublons selon les règles choisies. Pour supprimer seulement des doublons adjacents d'une entrée déjà triée, utilisez uniq.

$ sort names.txt > names-sorted.txt

N'exécutez pas sort names.txt > names.txt : le shell tronquerait l'entrée. GNU sort peut gérer le même chemin avec :

$ sort -o names.txt names.txt

Conservez une sauvegarde ou vérifiez un résultat séparé si les données comptent.

Sous GNU/Linux, quelle commande demande à sort de réécrire sûrement names.txt sans troncature préalable du shell ?

Leçon terminée

Vous avez terminé sort

Vous savez choisir les règles de comparaison et la destination d'un texte trié.

  • Trier des lignes sous une locale explicite si nécessaire.

  • Inverser avec -r.

  • Comparer des nombres avec -n.

  • Borner une clé avec -t et -k.

  • Supprimer les doublons ou enregistrer sans tronquer l'entrée.

Conservez votre progression

Créez un compte gratuit pour enregistrer cette leçon et continuer sur n'importe quel appareil.

Créer un compte gratuit
Leçon Suivante
Retour à Text-Fu