L' sort
utilitaire dans Ubuntu 10.04 (Lucid) effectue toujours un tri sans distinction de casse, comme si vous le spécifiiez --ignore-case
.
The two sort just give the same result:
echo -e "c\nb\nB\na" | sort
echo -e "c\nb\nB\na" | sort --ignore-case
Mais parfois, je souhaite effectuer un tri en fonction de la casse, afin que les lettres majuscules viennent en premier, puis les lettres minuscules. C'est possible?
echo $'B\nÄ\nb\na' | LC_COLLATE=C sort
. Le fait que GNUsort
avec une non-C
locale effectue toujours un tri respectueux de la casse soit-il considéré comme un bogue ?C.UTF-8
locale (LC_COLLATE=C.UTF-8
) effectuera un tri sensible à la casse, tout en traitant les caractères UTF-8 non ascii "normalement". Malheureusement, il n’est pas disponible en amont dans glibc et n’est corrigé que par Debian, Ubuntu et ses dérivés.Fait intéressant, encore un autre ordre de tri est disponible comme ceci:
qui met la lettre majuscule avant la lettre minuscule correspondante.
Voici une comparaison de leurs sorties (j'ai ajouté "d" et "D") dans les
en_US.UTF-8
paramètres régionaux (sauf en cas de substitution):echo -e "d\nD\nc\nb\nB\na" | sort
echo -e "d\nD\nc\nb\nB\na" | sort --ignore-case
echo -e "d\nD\nc\nb\nB\na" | LC_COLLATE=C sort
echo -e "d\nD\nc\nb\nB\na" | LC_COLLATE=C sort --ignore-case
Sortie:
la source
sort
v5.93
(fourni avec OS X 10.9.3 (!)) Etv8.13
, mais PAS dansv8.21
etv8.22
. Je suppose que les résultats de 2. et 4. peuvent toujours être considérés comme équivalents (mais cela changerait évidemment avec l'ajout de caractères étrangers).