对西里尔文文本进行排序的实用程序

对西里尔文文本进行排序的实用程序

我必须对几行西里尔字符进行排序,我想使用排序实用程序(在 MAC OS X 10.6 上)。问题是结果不正确。我将文本放入剪贴板,然后运行 ​​pbpaste | sort 这是纯文本数据,我还尝试将文件传递给 sort 命令。

我的源数据是

Биатлон
Арбуз
Фото
Пума
Перина
Новость
Карандаш
Перина с двумя пододеяльниками
Карикатура
Куст
Фигура

排序后我得到

Куст
Пума
Фото
Арбуз
Перина
Фигура
Перина с двумя пододеяльниками
Биатлон
Новость
Карандаш
Карикатура

这些行甚至没有按首字母分组。我尝试了选项 -d,但随后出现了错误

排序:字符串比较失败:非法字节序列排序:设置 LC_ALL='C' 以解决问题。排序:比较的字符串为\320\321\321\321' and\320\320\320\321\321\320'。

按照建议导出变量并不能解决问题。我该如何使用排序实用程序来完成这样的任务?是否需要其他信息?

答案1

我认为您需要设置语言环境。我认为您可以这样做:

LC_ALL="ru" pbpaste | sort

(第一部分在命令执行期间设置 LC_ALL 环境变量。)

我正在运行 Leopard。当我发出 pbpaste 时,所有字符都替换为问号。我确实将文本保存到名为 sort_temp.txt 的 UTF-8 编码文件中,然后运行:

sort sort_temp.txt 

给出了你发布的相同的排序不正确的列表,但运行

LC_ALL="ru" sort sort_temp.txt

或者

LANG="ru" sort sort_temp.txt

给出正确排序的列表。

答案2

尝试将数据保存在 unicode 编码(或 UTF8)文件中,如果排序实用程序启用了 unicode,它应该可以工作。我猜,问题是 pbpaste 没有正确设置编码。我不是 Mac 用户,所以这只是猜测。

相关内容