windows - 为什么 sort 命令在法语语言环境中对 "œ"和 "oe"进行无差别排序?

标签 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).

我想这与排序规则有关,但我想在这里了解一些情况。

最佳答案

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

然后在法语语言环境中,oe 和 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(倒序)选项来获取更多信息。

关于windows - 为什么 sort 命令在法语语言环境中对 "œ"和 "oe"进行无差别排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15813584/

相关文章:

c# - 在 .NET 中使用 NTFS 压缩来压缩文件夹

c - 如何使用 C 以编程方式 SCP 文件?

c# - 如何对轮廓进行排序?

c# - 正在删除文件,但访问被拒绝

c++ - 没有 "windows.h"的 GetProcessIdOfThread

windows - Windows 上的 Perl、文件关联和 I/O 重定向

linux - 在单个文件中接受多个用户输入的 Shell 脚本

xmllint 在 shell 脚本中不工作

java - 对显示的结果进行排序而不合并两个数组

python - Pandas:按两个参数分组并按第三个参数排序