Неправильное поведение "сортировать -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
сравнить байты памяти для правильного результата.