我必须对几行西里尔字符进行排序,我想使用排序实用程序(在 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 用户,所以这只是猜测。