Stu*_*pid 12 grep regular-expression unicode
我有一个 Unicode 字符 ?,由它的 Unicode 代码点 16A0 表示,在一个文本文件中(文本文件被编码(?)为 utf-8)。
当我这样做时,grep '\u16A0' test.txt我没有结果。我如何 grep 那个字符?
pLu*_*umo 10
您可以使用ANSI-C 引用来替换 ANSI C 标准指定的反斜杠转义字符。
grep $'\u16A0'
Run Code Online (Sandbox Code Playgroud)
对于一些更复杂的示例,您可以参考此相关问题及其答案。
小智 7
您可以使用ugrep作为 grep 的直接替代品来匹配 Unicode 代码点 U+16A0:
ugrep '\x{16A0}' test.txt
Run Code Online (Sandbox Code Playgroud)
它采用与 grep 相同的选项,但提供更多的功能,例如:
ugrep 搜索 UTF-8/16/32 输入和其他格式。选项 -Q 允许搜索许多其他文件格式,例如 ISO-8859-1 到 16、EBCDIC、代码页 437、850、858、1250 到 1258、MacRoman 和 KIO8。
ugrep默认匹配 Unicode 模式(使用选项 -U 禁用)。正则表达式模式语法符合 POSIX ERE 标准,并使用类似 PCRE 的语法进行了扩展。选项 -P 也可用于 Perl 与 Unicode 模式的匹配。
有关详细信息,请参阅GitHub 上的 ugrep。