Enquanto classifica no seguinte ambiente:
$ uname -a
Linux srap12dxR1 3.12.28-4-default #1 SMP Thu Sep 25 17:02:34 UTC 2014 (9879bd4) x86_64 x86_64 x86_64 GNU/Linux
$ env | egrep 'LANG|LC'
LC_COLLATE=de_DE.UTF-8
LC_CTYPE=de_DE.UTF-8
o seguinte arquivo codificado em UTF-8:
$ cat sort_me
¬B
b
Ä
D
X
ä
C
c
A
a
$ od -c sort_me
0000000 302 254 B \n b \n 303 204 \n D \n X \n 303 244 \n
0000020 C \n c \n A \n a \n
usando o sinalizador -f (dobrar para maiúsculas) eu recebo:
A
a
b
C
c
D
X
¬B
Ä
ä
i.e. o char ¬ não é ignorado e o alemão Umlaut Ä é colocado no final.
Não usando o sinalizador -f a saída está correta:
$ sort sort_me
a
A
ä
Ä
b
¬B
c
C
D
X
i.e. o char ¬ é ignorado e ¬B é classificado abaixo do char b , mas por que os Umlauts alemães não são tratados apenas como chars normais como o Wiki afirma:
link "... Em alemão, as letras com trema (Ä, Ö, Ü) são tratadas geralmente como suas versões não-semlautadas, ..."