在西里尔文本上排序实用程序


1

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

我的源数据是

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

排序后我得到了

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

Theese线甚至没有按首字母分组。我尝试了选项-d,但后来我收到错误

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

按建议导出变量无法解决问题。如何将sort工具用于此类任务?还需要任何其他信息吗?

Answers:


2

我相信你需要设置语言环境。我想你可以这样做:

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

给出一个正确排序的列表。


0

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


我也试过UTF-8文件,但由于结果是一样的,我没有提到它。
安东2010年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.