Sob o C
locale, sort
classifica na ordem dada pelos bytes brutos; na en_US
locale, sort
ordena a ordem lexicográfica culturalmente apropriada:
-
No
C
locale:http://z
classifica antes dehttps://a
porque':'
(58) é menor que's'
(115). -
No
en_US
locale:https://a
classifica antes dehttp://z
porque a ordem lexicográfica do inglês americano ignora os separadores, de modo que as sequências são agrupadas como se fossemhttpsa
ehttpz
, e obviamentes
vem antes dez
. / p>
man 1 sort
diz:
*** WARNING *** The locale specified by the environment affects sort
order. Set LC_ALL=C to get the traditional sort order that uses native
byte values.
Para alterar apenas a ordem de classificação, você pode definir a variável de ambiente LC_COLLATE
:
$ echo -e 'ab:d\nabc:d' | LC_COLLATE=en_US.UTF-8 sort
abc:d
ab:d
$ echo -e 'ab:d\nabc:d' | LC_COLLATE=C.UTF-8 sort
ab:d
abc:d
Nota: a variável de ambiente LC_ALL
tem precedência sobre as variáveis LC_
detalhadas.