Comportamento incorreto de "sort -u"?

0

[atualizado 12.11]

Encontrei uma solução temporária para isso.

LC_ALL=C sort -u

do relatório de erros aqui

sort obterá informações de LC_ALL ou LANG ,

Meu padrão está vazio para LC_ALL , mas zh_CN.UTF-8 para LANG . Se en_US.UTF-8 estiver definido para LANG , ocorrerá o mesmo problema.

Eu não vou cavar mais. Mas parece que o método de codificação incorreto é usado para sort .

Muito obrigado pela @GeorgeUdosen.

[atualizado 12,11] Teste em outros sistemas:

Distribution              Sort_Version      Result
====================================================
ubuntu 17.10 (laptop)     gnu sort 8.26     Wrong
ubuntu 16.04 (desktop)    gnu sort 8.5      Wrong
centos 7                  gnu sort 8.22     Correct
centos 6                  gnu sort 8.6      Wrong
Max OSX                   2.3-Apple (99)    Correct

todos,

Eu tenho algum trabalho para fazer com o meu corpus chinês. Um deles é criar uma lista de caracteres chineses.

Aqui está o problema. Eu tenho alguns caracteres (pontuações chinesas) abaixo: “ ” 、 。 《 》 ! ( ) , : ?

se eu tentar usar sort -u , só tenho os símbolos abaixo:

“ ” 、

sort version is 8.26, on ubuntu 17.10 with everything up to date.

registro de operação completa: pastebin

os caracteres acima podem ser baixados em: pastebin

    
por DonYorkDon 11.12.2017 / 07:33

1 resposta

1

use

LC_ALL=C sort -u ou LC_COLLATE=C sort -u

para forçar a função de comparação em sort para comparar bytes de memória para corrigir resultado.

    
por DonYorkDon 11.12.2017 / 09:57