为什么grep perl-regex模式将UTF-8流/文件视为二进制?

时间:2012-04-03 10:40:38

标签: grep pcre

我尝试使用perl-regex模式,因为我想匹配可能的跨区模式,如:

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

如果我想匹配“Name Surname”。

因此使用<stdout> | grep -Pzo "(?s)Name.Surname"对ASCII非常有用,但如果我想在utf-8编码文件上尝试相同的操作,我会得到:

Binary file (standard input) matches

当我用它喂grep而没有结果。我也试过常规文件grep -Pzo "(?s)Name.Surname" utf-8.txt,但它是相同的

没有perl-regex开关的OTOH grep在同一个流上按预期工作

那么有没有可以解决这个问题的开关呢?

1 个答案:

答案 0 :(得分:1)

您可以使用grep-a选项告诉--binary-files=text将其视为文本文件:

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

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