class linux em UTF8

1

Um arquivo classificado (com LANG = fr_FR.UTF-8 ) contém:

Bassano del Grappa - Remondini, Giuseppe, II (1745-1811)
Bassano del Grappa - Remondini, Giuseppe, I (1672-1742)
...
Zurich - Wolf, Johannes (1564-1627)
Zurich - Wolf, Johann Rudolf, I (15..-1624)

Não há problema com acentuação. Mas, por que II antes de I ou Johannes antes de Johann ?

(no servidor Red Hat Enterprise Linux versão 6.6 (Santiago)).

    
por mip22 09.03.2018 / 10:26

2 respostas

0

Ao usar um código de idioma não POSIX GNU sort não leva à saída esperada no Linux. Isso não acontece no Solaris, mesmo com o GNU sort . Veja Stéphane Chazelas uma explicação detalhada aqui .

Sua melhor aposta é mudar para a POSIX locale com a qual você terá pelo menos uma saída consistente:

Por exemplo:

$ cat f
w
e
é
f
 z
  x

Linux:

$ LC_ALL=C sort f
  x
 z
e
f
w
é
$ LC_ALL=fr_FR.utf8 sort s
e
é
f
w
  x
 z

Solaris:

LC_ALL=C sort s 
  x
 z
e
f
w
é
$ LC_ALL=fr_FR.UTF-8 sort s
  x
 z
e
é
f
w
    
por 09.03.2018 / 12:04
0

Eu resolvi o problema substituindo todos os espaços pelo padrão 000 antes de ordenar (é provavelmente um problema de espaço !! ??). Obrigado a todos, especialmente Stéphane pelo link para "Gerar a ordem de ordenação de uma string".

    
por 12.03.2018 / 15:49

Tags