首页 > 解决方案 > 为什么 sed/grep 不匹配带有变音符号的单词?

问题描述

我正在构建一个单词表,并希望使用从文件中删除变音符号

sed -i -E '/[^a-zA-ZäöüÄÖÜß]/d' wordlist.txt

但是,这并没有删除例如André,我不明白为什么。也不grep输出这一行。我错过了什么?

标签: regexsedgrepdebian

解决方案


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

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

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

有点自相矛盾的是,几乎可以肯定要安装 Perl,而您安装的系统sed可能支持也可能不支持这些工具。


推荐阅读