Il semble que vous utilisiez une locale non POSIX.
Essayez :
export LC_ALL=C
puis sort .
info sort dit clairement :
(1) Si vous utilisez une locale non POSIX (par exemple, en définissant `LC_ALL' sur `en_US'), alors `sort' peut produire une sortie triée différemment de celle à laquelle vous êtes habitué. Dans ce cas, définissez la variable d'environnement `LC_ALL' sur `C'. Notez que définir uniquement `LC_COLLATE' présente deux problèmes. Premièrement, il est inefficace si `LC_ALL' est également défini. Deuxièmement, il a un comportement indéfini si `LC_CTYPE' (ou `LANG', si `LC_CTYPE' n'est pas défini) est défini sur une valeur incompatible. Par exemple, vous obtenez un comportement indéfini si `LC_CTYPE' est `ja_JP.PCK' mais `LC_COLLATE' est `en_US.UTF-8'.
Comme man sort dit, "ordre du dictionnaire" signifie "considérer uniquement les blancs et les caractères alphanumériques". Par exemple, étant donné les données
The
!quick
brown
@fox
jumps
#over
17
$lazy
dogs
%42
times.
le sort sans fioritures commande produit
dogs
!quick
#over
$lazy
%42
@fox
17
brown
jumps
The
times.
(en mettant les lignes qui commencent par les espaces et le ! , # , $ , % , et @ symboles devant les lignes commençant par des lettres et des chiffres ; c'est-à-dire des caractères alphanumériques ), mais sort -d produit
dogs
17
%42
brown
@fox
jumps
$lazy
#over
!quick
The
times.
dogs est toujours le premier, car il commence par des espaces, mais les caractères spéciaux (ponctuation) sont ignorés. 17 vient avant 42 , et fox est compris entre brown et jumps ,malgré le fait que 42 et fox ont des caractères devant eux qui les déplaceraient normalement avant le 17 .
____________
dans l'ordre de leurs valeurs ASCII :space=040, ! =041, # =043, $ =044, % =045 et @ =0100. Notez que (sans tenir compte de la barre d'espace) c'est approximativement l'ordre de gauche à droite sur certains claviers.
Pour déterminer l'ordre de tri, créez simplement un fichier avec un caractère différent sur chaque ligne et triez-le. La sortie résultante vous indiquera l'ordre de tri.