Неправильное поведение "сортировать -u"?

[обновлено 12.11]

Я нашел временное решение для этого.

LC_ALL=C sort -u

из багрепорта здесь

sort будет получать информацию от LC_ALL или же LANG,

Мой по умолчанию пуст для LC_ALL, но zh_CN.UTF-8 за LANG, Если en_US.UTF-8 установлен для LANGтакая же проблема возникнет.

Я не буду копать больше. Но похоже, что неправильный метод кодирования используется для sort,

Большое спасибо за @ GeorgeUdosen.


[обновлено 12.11] Тест на других системах:

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

каждый,

У меня есть работа с моим китайским корпусом. Одним из них является создание списка китайских иероглифов.

Здесь проблема. Я получил несколько символов (китайские знаки препинания) ниже: “ ” 、 。 《 》 ! ( ) , : ?

если я попытаюсь использовать sort -uЯ получил только символы ниже:

“ ” 、


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

полная запись операции: pastebin

символы выше можно скачать по адресу: pastebin

1 ответ

Использование

LC_ALL=C sort -uили жеLC_COLLATE=C sort -u

заставить функцию сравнения в sort сравнить байты памяти для правильного результата.

Другие вопросы по тегам