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=Cto get the traditional sort order that uses native byte values.