Scroll to navigation

SORT(1) Manuel de l'utilisateur Linux SORT(1)

NOM

sort - Trier les lignes d'un fichier texte

SYNOPSIS

sort [-cmus] [-t séparateur] [-o fichier_de_sortie] [-T répertoire_temporaire] [-bdfiMnr] [+POS1 [-POS2]] [-k POS1[,POS2]] [fichier...]
sort {--help,--version}

DESCRIPTION

Cette page de manuel documente la version GNU de sort.

sort trie, regroupe ou compare toutes les lignes des fichiers indiqués. Si aucun fichier n'est fourni, ou si le nom `-' est mentionné, la lecture se fera depuis l'entrée standard.

Par défaut, sort écrit ses résultats sur la sortie standard.

sort peut opérer suivant trois modes : tri (par défaut), regroupement, et vérification de l'ordre. Les options suivantes modifient le mode opératoire :

([NDT] c = check - vérifier) Vérifie si les fichiers fournis sont déjà triés : s'ils ne le sont pas, afficher un message d'erreur, et terminer avec un code de retour valant 1.
([NDT] m = merge - melanger) Regrouper les fichiers indiqués en les triant. Chaque fichier d'entrée doit déjà être trié individuellement. Il est toujours possible de trier plutôt que de réunir, le regroupement est fourni parce qu'il est plus rapide dans les cas où il fonctionne.

La comparaison de deux lignes se fait ainsi : Si un champ clé a été indiqué, sort compare chaque paire de champs, dans l'ordre précisé sur la ligne de commande, jusqu'à ce qu'une différence soit trouvée, ou qu'il ne reste plus de champs.

Si l'une des options globales Mbdfinr est utilisée, et si aucun champ clé n'est indiqué, sort compare les lignes entières en fonction des options globales.

Finalement, si toutes les clés sont égales, en dernier ressort sort compare les lignes octet par octet suivant l'ordre défini sur la machine. Cette dernière comparaison accepte l'option globale -r. L'option -s (stable) inhibe cette comparaison en dernier recours afin que les lignes considérées comme égales restent à leurs positions relatives. Si aucun champ clé, et aucune option ne sont fournis, -s est sans effet.

La version GNU de sort n'a pas de limitation concernant la longueur des lignes d'entrée ou les caractères autorisés. De plus, si le dernier octet d'une ligne d'entrée n'est pas un saut de ligne (NewLine), la version GNU de sort en ajoute un automatiquement.

Si la variable d'environnement TMPDIR est configurée, sort utilise ce répertoire pour stocker les fichiers temporaires à la place du répertoire par défaut /tmp. L'option -T répertoire_temporaire permet également de sélectionner un répertoire pour placer les fichiers temporaires, elle a priorité sur la variable d'environnement.

Les options suivantes affectent l'ordre des lignes de sortie. Elles peuvent être mentionnées globalement, ou appliquées à un champ clé spécifique. Si aucun champ clé n'est indiqué, les options globales s'appliquent aux comparaisons des lignes entières, sinon elles sont transmises aux champs clés n'ayant pas d'option spécifique.

Ignorer les blancs en début de ligne pendant la recherche de la clé de tri sur chaque ligne.
Trier dans l'ordre des répertoires téléphoniques : ignorer pour le tri tous les caractères autres que les lettres, les chiffres et les blancs.
Considérer les minuscules comme leur équivalent en majuscule pendant le tri. Ainsi `b' est trié de manière équivalente a `B'. ([NDT] Bien entendu, cela ne fonctionne pas avec les minuscules accentuées...)
Ignorer pour le tri les caractères en dehors de l'intervalle ASCII octal 040-0176 (bornes comprises).
Une chaîne initiale, consistant en un nombre quelconque de blancs, suivi de trois lettres correspondant à une abréviation de mois est convertie en majuscules avant d'être comparée dans l'ordre `JAN' < `FEB' < ... < `DEC.' Les noms invalides sont considérés comme inférieurs aux noms valides. (Ndt : qu'en-est-il vis-à-vis de la localisation ?)
Comparer suivant la valeur arithmétique d'une chaîne numérique initiale composée d'espaces éventuelles, suivies optionnellement du signe -, et de zéro ou plusieurs chiffres, éventuellement suivis d'un point décimal et de zéro ou plusieurs chiffres.
Inverser l'ordre de tri, afin que les lignes avec la plus grande valeur de clé apparaissent en premier.

Les autres options sont :

Écrire dans le fichier_de_sortie plutôt que sur la sortie standard. Si fichier_de_sortie est également un fichier d'entrée, sort copie les données dans un fichier temporaire avant le tri pour pouvoir écrire correctement ses résultats dans le fichier_de_sortie.
Utiliser le caractère_séparateur afin de distinguer les champs pour rechercher la clé de tri sur chaque ligne. Par défaut le séparateur de champs est une chaîne blanche entre chaînes non-blanches. Ceci signifie qu'avec l'entrée ` foo bar', sort distingue deux champs ` foo' et ` bar'. Le séparateur n'appartient ni au champ précédent, ni au champ suivant.
Pour l'action par défaut, ou pour l'action -m, n'afficher que la première séquence de lignes considérées comme égales. Pour l'action -c, vérifier qu'aucune lignes consécutives ne soient égales.
+POS1 [-POS2]
Indiquer un champ à utiliser comme clé de tri pour chaque ligne. Le champ consiste en une portion de de ligne débutant à la position POS1, et s'étendant jusqu'à POS2 non-inclue (ou jusqu'à la fin de la ligne si POS2 n'est pas mentionnée). Les positions des champs et des caractères sont numérotées à partir de 0.
Une autre syntaxe possible pour indiquer les clés de tri. Les positions des champs et des caractères sont numérotées à partir de 1.

Une position est de la forme f.c, où f est le numéro du champ à utiliser, et c le numéro du premier caractère depuis le début du champ (avec +pos) ou depuis la fin du champ précédent (avec -pos). La partie .c de la position peut être omise, auquel cas le caractère considéré est le premier du champ. Si l'option -b est choisie, la partie .c d'une spécification de champ est comptée à partir du premier caractère non-blanc du champ (pour +pos) ou à partir du premier caractère non-blanc suivant le champ précédent (pour -pos).

Un argument +pos ou -pos peut également avoir un préfixe constitué d'une des lettres d'option Mbdfinr auquel cas les options globales ne s'appliquent pas à ce champ. l'option -b peut être attachée indépendamment aux parties +pos ou -pos d'une spécification de champ. Si elle est héritée d'une option globale, elle s'appliquera aux deux parties. Si une option -n ou -M est utilisée, ceci implique que l'option -b s'applique aux deux spécifications +pos et -pos. Les clés peuvent s'étendre sur plusieurs champs.

De plus quand la version GNU de sort est invoquée avec un seul argument, les options suivantes sont reconnues :

Afficher un message d'aide sur la sortie standard et se terminer normalement.
Afficher un numéro de version sur la sortie standard et se terminer normalement.

CONFORMITÉ

Les implémentations historiques (BSD et System V) de sort diffèrent quant à leur interprétation de certaines options, notamment -b, -f, et -n. La version GNU suit le comportement POSIX, qui est généralement (mais pas toujours) celui de la version System V. Suivant POSIX -n n'implique plus obligatoirement -b. Pour assurer l'homogénéité, -M a été modifiée de la même manière. Dans certains cas, assez obscurs, ceci peut affecter la signification des positions de caractères dans les spécifications de champs. Si ceci vous perturbe, vous pouvez ajouter explicitement un -b.

BOGUES

Les différentes significations des numéros de champs en fonction de l'utilisation ou non de l'option -k induit une confusion certaine. C'est la faute à POSIX !

TRADUCTION

Christophe Blaess, 1996-2003.

30 juillet 2003 coreutils