我目前在使用 util-linuxlook
与德语元音变音 ( ä
, ö
, ü
) 时遇到问题。出于测试目的,我设置了LC_ALL=de_DE.UTF-8
.
考虑german.dic
:
Aachen
Rindfleisch
在UTF-8
编码中:
$ file german.dic
german.dic: UTF-8 Unicode text
如果我尝试用 找到第二个单词/usr/bin/look
,它工作得很好:
$ look Rindf german.dic
Rindfleisch
ä
即使我在单词中添加带有德语元音变音 ( ) 的单词,该单词look
仍然可以按预期工作:
$ cat german.dic
Altäster
Rindfleisch
$ look Rindf german.dic
Rindfleisch
然而,如果有一个单词开头带有变音符号:
$ cat german.dic
Ältester
Rindfleisch
$ look Rindf german.dic
变音符号是大写还是小写并不重要。
我也尝试过设置LC_ALL=de_DE.UTF-8
(它肯定安装在我的系统上),但没有用。
答案1
Stephen Kitt 在评论中建议,这个错误不会出现在bsdmainutils
.
我在跑步
Linux archlinux 5.6.10-arch1-1 #1 SMP PREEMPT Sat, 02 May 2020 19:11:54 +0000 x86_64 GNU/Linux
从util-linux
2011 年 6 月开始。
在bsd 版本的联机帮助页look
提到以下内容:
输入文件必须在 LC_COLLATE 设置为“C”的情况下进行排序。
的 util-linux 联机帮助页中没有关于此的行look
。
当使用C
区域设置排序时,元音变音会被转义:
$ LC_COLLATE=C sort german.dic
Rindfleisch
Ältester
ÖBB
(请注意我如何添加以 Ö 开头的行以进行测试)。
如果我尝试look
在这个文件中,它会按预期工作:
$ LC_COLLATE=C sort german.dic -o german.dic
$ cat german.dic
Rindfleisch
Ältester
$ look Rindf german.dic
Rindfleisch
$ look Ält german.dic
Ältester
$ look Ö german.dic
ÖBB
谢谢您的帮助!