localidade de localidade de localidade
Você obtém resultados inesperados porque sua localidade padrão é diferente de C
ou C.UTF-8
.
sort
classifica na ordem dos valores de byte apenas na região C; em outras localidades, sort
ordena a misteriosa ordem definida por almas bem intencionadas nos arquivos de definição de localidade.
Compare:
$ <<< $'@ERR894725.10000000/1\t1\[email protected]/1\t2\[email protected]/2\t3\[email protected]/2\t4' \
LC_ALL=en_US.UTF-8 sort -s -k1.1
@ERR894725.10000000/1 1
@ERR894725.100000002/1 2
@ERR894725.100000002/2 3
@ERR894725.10000000/2 4
$ <<< $'@ERR894725.10000000/1\t1\[email protected]/1\t2\[email protected]/2\t3\[email protected]/2\t4' \
LC_ALL=C.UTF-8 sort -s -k1.1
@ERR894725.10000000/1 1
@ERR894725.10000000/2 4
@ERR894725.100000002/1 2
@ERR894725.100000002/2 3
Se você valoriza a consistência, sempre diga LC_ALL=C sort
(ou LC_ALL=C.UTF-8 sort
ou, em geral, LC_ALL=
< your-preferred-locale > sort
) e nunca apenas sort
.
A página de manual tem isto a dizer:
*** 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.