regex - 为什么 sed/grep 不匹配带有变音符号的单词?
问题描述
我正在构建一个单词表,并希望使用从文件中删除变音符号
sed -i -E '/[^a-zA-ZäöüÄÖÜß]/d' wordlist.txt
但是,这并没有删除例如André
,我不明白为什么。也不grep
输出这一行。我错过了什么?
解决方案
您根本缺少的是,这取决于您的语言环境和 Unicode 规范化,其次取决于您是否sed
支持这两种工具。
要可靠地过滤包含列表中以外的变音符号的行,可能会切换到可移植且可靠地支持所有这些 Unicode 概念的工具。
perl -CSD -nle 'print unless /[^a-zA-ZöüÄÖÜß]/' wordlist.txt
有点自相矛盾的是,几乎可以肯定要安装 Perl,而您安装的系统sed
可能支持也可能不支持这些工具。
推荐阅读
- android - Firebase 应用分发 - 找不到 APK。确保首先通过运行 ./gradlew assemble[Variant] 构建
- java - service.SecurityServiceImpl 中的字段 authenticationManager 需要一个 'org.springframework.security.authentication.AuthenticationManager' 类型的 bean
- python - 具有高级重写和简化功能的 SymPy
- c++ - 保证统一支撑数组初始化的复制省略 - 自 C++17 以来这不应该是强制性的吗?
- python - 如何将不同的列表减少到完全相同的长度?
- reactjs - 我不能在 .js 文件中使用 html 标签(jsx 代码)
- snakemake - 大型工作流的 DAG 完成后 Snakemake 挂起
- hadoop - 物理节点和虚拟节点有什么区别?
- java - Java -Executable JAR- 创建 FileWriter 时出错:FileNotFoundException 访问被拒绝
- python - 有什么方法可以知道 Python 中的单独程序可用的命令行选项吗?