2012-04-03 1 views
1

Я пытался использовать режим Perl-регулярных выражений, как я хотел, чтобы соответствовать возможным составному шаблону, как:Почему режим grep perl-regex обрабатывает поток/файл UTF-8 как двоичный?

... 
text text Name 
Surname text text 
... 

, если я хочу, чтобы соответствовать «Имя Фамилия».

Таким образом, используя <stdout> | grep -Pzo "(?s)Name.Surname" работает отлично подходит для ASCII, но если я хочу, чтобы попробовать то же самое на UTF-8 закодированный файл я получаю:

Binary file (standard input) matches 

, когда я кормлю Grep с ним и без каких-либо результатов. Я также попытался с обычным файлом grep -Pzo "(?s)Name.Surname" utf-8.txt но это же

OTOH Grep без жемчужно-регулярных выражений переключатель работает, как ожидается, на одном потоке

Так есть ли выключатель, который может решить эту проблему?

ответ

1

Вы можете сказать, grep рассматривать его в виде текстового файла, используя -a или --binary-files=text вариант:

... | grep -aPzo "(?s)Name.Surname" 

grep -aPzo "(?s)Name.Surname" utf-8.txt 
+0

, что на самом деле решает проблему: о – theta

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

  • Нет связанных вопросов^_^