我有几个非常大的XML文件,我试图找到包含非ASCII字符的行.我尝试过以下方法:
grep -e "[\x{00FF}-\x{FFFF}]" file.xml
Run Code Online (Sandbox Code Playgroud)
但是这会返回文件中的每一行,无论该行是否包含指定范围内的字符.
我的语法有错吗?或者我做错了什么?我也尝试过:
egrep "[\x{00FF}-\x{FFFF}]" file.xml
Run Code Online (Sandbox Code Playgroud)
(模式周围有单引号和双引号).
我试图在unix中的数据文件中找出不可打印的字符.代码:
#!/bin/ksh
export SRCFILE='/data/temp1.dat'
while read line
do
len=lenght($line)
for( $i = 0; $i < $len; $i++ ) {
if( ord(substr($line, $i, 1)) > 127 )
{
print "$line\n";
last;
}
done < $SRCFILE
Run Code Online (Sandbox Code Playgroud)
代码无效,请帮我解决上述问题.
有没有办法可以find处理包含非 ASCII 字符的文件?我当然可以使用管道 - 并使用 perl 过滤文件,但为了提高效率,我想将其全部设置为find. 我尝试了以下方法:
find . -type f -name '*[^[:ascii:]]*'
Run Code Online (Sandbox Code Playgroud)
它根本不起作用。
编辑:
我现在正在尝试利用
find . -type f -regex '.*[^[:ascii:]].*'
Run Code Online (Sandbox Code Playgroud)
它是一个 emacs 正则表达式并且有[:ascii:]类。但我试图使用的表达方式不起作用。
编辑2:
LC_COLLATE=C find . -type f -regex '.*[^!-~].*'
Run Code Online (Sandbox Code Playgroud)
匹配带有非 ASCII 字符的文件(一个完整的巫术......)。但也匹配名称中带有空格的文件。