O sort
utilitário no Ubuntu 10.04 (Lucid) sempre classifica por distinção entre maiúsculas e minúsculas, assim como se você especificar --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
Mas, às vezes, quero classificar por distinção entre maiúsculas e minúsculas, para que as letras maiúsculas cheguem primeiro, depois as minúsculas. É possível?
echo $'B\nÄ\nb\na' | LC_COLLATE=C sort
. O fato de o GNUsort
com um nãoC
local sempre executar sempre uma classificação sem distinção entre maiúsculas e minúsculas deve ser considerado um bug ?C.UTF-8
código do idioma (LC_COLLATE=C.UTF-8
) classifica com distinção entre maiúsculas e minúsculas, enquanto trata caracteres UTF-8 não ascii "normalmente". Infelizmente, ele não está disponível na glibc a montante e é corrigido apenas pelo Debian, Ubuntu e derivados.Curiosamente, ainda há outra ordem de classificação disponível assim:
que coloca a letra maiúscula antes da letra minúscula correspondente.
Aqui está uma comparação de suas saídas (adicionei "d" e "D") no
en_US.UTF-8
código do idioma (exceto onde substituído):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
Saída:
fonte
sort
v5.93
(vem com o OS X 10.9.3 (!)) Ev8.13
, mas NÃO nov8.21
ev8.22
. Eu acho que os resultados de 2. e 4. ainda podem ser considerados equivalentes (mas isso obviamente mudaria com a adição de caracteres estrangeiros).