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.
[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
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.