为什么 sed/grep 不匹配带有变音符号的单词?

Why is sed/grep not matching words with diacritics?

我正在构建一个单词列表并希望使用

从文件中删除变音符号
sed -i -E '/[^a-zA-ZäöüÄÖÜß]/d' wordlist.txt

但是,这不会删除 e。 G。 André 我不明白为什么。另外 grep 不输出这一行。我错过了什么?

您根本缺少的是,这取决于您的语言环境和 Unicode 规范化,其次取决于您的 sed 是否支持这两种功能。

可靠地过滤包含列表中以外的变音符号的行,可能会切换到可移植且可靠地支持所有这些 Unicode 概念的工具。

perl -CSD -nle 'print unless /[^a-zA-ZöüÄÖÜß]/' wordlist.txt

有点矛盾的是,几乎肯定会安装 Perl,而您的系统安装 sed 可能支持也可能不支持这些功能。