排序后的文件(带有LANG = fr_FR.UTF-8
)包含:
Bassano del Grappa - Remondini, Giuseppe, II (1745-1811)
Bassano del Grappa - Remondini, Giuseppe, I (1672-1742)
...
Zurich - Wolf, Johannes (1564-1627)
Zurich - Wolf, Johann Rudolf, I (15..-1624)
重音没有问题。但是,为什么是II
之前I
还是Johannes
之前呢Johann
?
(这是在 Red Hat Enterprise Linux Server 版本 6.6(圣地亚哥)上)。
答案1
当使用非 POSIX 语言环境时,GNU sort
不会导致 Linux 下的预期输出。即使使用 GNU,这种情况也不会在 Solaris 下发生sort
。请参阅 Stéphane Chazelas 的深入解释这里。
最好的选择是切换到POSIX
至少可以获得一致输出的区域设置:
例如:
$ cat f
w
e
é
f
z
x
Linux:
$ LC_ALL=C sort f
x
z
e
f
w
é
$ LC_ALL=fr_FR.utf8 sort s
e
é
f
w
x
z
索拉里斯:
LC_ALL=C sort s
x
z
e
f
w
é
$ LC_ALL=fr_FR.UTF-8 sort s
x
z
e
é
f
w
答案2
我通过在排序之前用模式 000 替换所有空格解决了这个问题(这可能是一个空格问题!!?)。谢谢大家,特别是 Stéphane 提供的“从字符串中生成整理顺序”的链接。