我目前对util的look和德国的umlauts (ä,ö,ü)有问题。出于测试目的,我设置了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中添加了一个带有德语umlaut (D12)的单词,但仍如预期的那样工作:
$ cat german.dic
Altäster
Rindfleisch
$ look Rindf german.dic
Rindfleisch但是,如果开头有一个带有umlaut的单词:
$ cat german.dic
Ältester
Rindfleisch
$ look Rindf german.dic无论是大写还是小写,都无所谓。
我也尝试过设置LC_ALL=de_DE.UTF-8 (它肯定安装在我的系统上),但是没有工作。
发布于 2020-05-06 17:17:13
Stephen在评论中指出,bsdmainutils中没有出现这个bug。
我在跑步
Linux archlinux 5.6.10-arch1-1 #1 SMP PREEMPT Sat, 02 May 2020 19:11:54 +0000 x86_64 GNU/Linux从2011年6月开始与util-linux合作。
在的bsd版本的手册look中提到了以下内容:
输入文件必须用LC_COLLATE设置为‘C’排序。
在look的util手册中没有这方面的内容。
在使用C语言环境进行排序时,对umlauts进行转义:
$ 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谢谢你的帮助!
https://unix.stackexchange.com/questions/584954
复制相似问题