如何在文件中找到不可打印的字符?

use*_*763 6 grep file find non-ascii-characters

我试图在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)

代码无效,请帮我解决上述问题.

pax*_*blo 9

您可以使用grep在文件中查找不可打印的字符,如下所示,它找到所有非可打印的ASCII和所有非ASCII:

grep -P -n "[\x00-\x1F\7F-\xFF]" input_file
Run Code Online (Sandbox Code Playgroud)

-P为您提供更强大的Perl正则表达式(PCRE)并-n显示行号.

如果您grep不支持PCRE,我会直接使用Perl:

perl -ne '$x++;if($_=~/[\x00-\x1F\x7F-\xFF]/){print"$x:$_"}' input_file
Run Code Online (Sandbox Code Playgroud)


bla*_*ith 9

你可以尝试这样的事情:

grep '[^[:print:]]' filePath
Run Code Online (Sandbox Code Playgroud)

  • 如果您不想包含空格/制表符,则需要使用 `[^[:print:][:blank:]]`。 (2认同)