Почему режим grep perl-regex рассматривает поток / файл UTF-8 как двоичный файл? - PullRequest
2 голосов
/ 03 апреля 2012

Я пытался использовать режим Perl-Regex, так как я хотел сопоставить возможный составной шаблон, например:

...
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 без переключателя perl-regex работает, как и ожидалось, в том же потоке

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

1 Ответ

1 голос
/ 03 апреля 2012

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

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

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