2014-09-08 2 views
3

Я попытался выяснить непечатаемые символы в файле данных в unix. Код:TO Найти непечатаемые символы в файле

#!/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 

код не работает, пожалуйста, помогите мне в получении решения для вышеупомянутого запроса.

С уважением, Venkat Ланка

ответ

5

Вы можете использовать grep для поиска непечатаемых символов в файле, что-то вроде следующего, который находит все непечатаемые-ASCII и все не-ASCII:

grep -P -n "[\x00-\x1F\7F-\xFF]" input_file 

-P дает вам более мощные регулярные выражения Perl (PCRE) и -n показывает номера строк.

Если ваш grep не поддерживает PCREs, я бы просто использовать Perl для этого непосредственно:

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

Привет Спасибо за вашу информацию, кроме Команда grep не работает. На самом деле я хотел найти непечатаемые символы в файле. Пожалуйста, помогите, если вы можете – user3759763

+0

. Диапазон '\ x80- \ xFF' охватывает не-ASCII, но OP запрашивает непечатаемые символы, которые в контексте ASCII также включают' \ x00 - \ x1F'. – rlandster

0

Вы можете попробовать что-то вроде этого:

grep '[^[:print:]]' filePath 
+1

Я устал от вышеприведенной команды, не отображает никакого вывода – user3759763

+0

Можете ли вы предоставить некоторую часть файла в качестве примера. Снова вы хотите показать строки, содержащие эти символы, или? – blackSmith

+0

HI Smith, пожалуйста, найдите ниже запись – user3759763

Смежные вопросы