为什么sort命令在法语区域中对“œ”和“oe”进行无差别的排序?

时间:2013-04-04 14:06:58

标签: windows unix sorting encoding cygwin

有人可以解释sort命令的行为,其中包含带有法语区域设置的字符吗?

$ file file.txt
file.txt: UTF-8 Unicode text, with CRLF line terminators

$ wc -l file.txt
4 file.txt

$ cat file.txt
cœz
coez
coe
cœ

$ sort file.txt
coe
cœ
cœz
coez

$ sort -d file.txt
cœ
coe
coez
cœz

$ env | grep -P "(LC|FR)"
LANG=fr_FR.UTF-8

“œ”小于或大于“oe”的事实在常规排序的情况下似乎是随机的,而在字典排序(sort -d)的情况下,该字符被简单地忽略。

我想这与整理有关,但我想在这里有一些见解。

1 个答案:

答案 0 :(得分:1)

字典排序可能忽略了 - 连字,因为它不在ascii的a-zA-Z范围内。 (这是猜测)。

然后在法国语言环境中,œ和oe比较相同,所以他们应该以他们进入的顺序出现,这似乎发生在你身上。如果这是正确的,那么如果你把它放在:

cœz
coez
cœm
coem
coep
cœp
coe
cœ

你应该得到这个:

coe
cœ
cœm
coem
coep
cœp
cœz
coez

您可以使用-c(检查文件是否已排序)或-r(逆序)选项来获取更多信息。