我有几个非常大的 XML 文件,我正在尝试查找包含非 ASCII 字符的行。我尝试过以下方法:
grep -e "[\x{00FF}-\x{FFFF}]" file.xml
但这会返回文件中的每一行,无论该行是否包含指定范围内的字符。
我的语法是否错误或者我做错了什么?我也尝试过:
egrep "[\x{00FF}-\x{FFFF}]" file.xml
(模式周围有单引号和双引号)。
最佳答案
您可以使用命令:
grep --color='auto' -P -n "[\x80-\xFF]" file.xml
这将为您提供行号,并以红色突出显示非 ASCII 字符。
在某些系统中,根据您的设置,上述方法将不起作用,因此您可以通过逆向 grep
grep --color='auto' -P -n "[^\x00-\x7F]" file.xml
另请注意,重要的一点是 -P
标志,它相当于 --perl-regexp
:因此它将把您的模式解释为 Perl 正则表达式。它还说
this is highly experimental and grep -P may warn of unimplemented features.
关于regex - 如何 grep 查找所有非 ASCII 字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3001177/