首页 > 解决方案 > 为什么 grep 返回部分匹配列表,然后退出,将文件的其余部分视为二进制文件?

问题描述

我有一个相对较大的文件(24M,173K 行),我正在寻找一个字符串(“SIM_ANALYTICS”)。在正确找到前 23 个匹配行后,它会报告“二进制文件匹配”并在那里结束。如果我“grep -a --text”,那么它工作正常,找到 91 个匹配行。

出于某种原因,grep 开始将文件解释为文本文件并找到前 23 个。然后它似乎切换模式并认为它是二进制文件并退出(除非我使用 -a --text)。

我可以将文件分类到 STDOUT,它看起来不错。

一个简单的 perl 脚本确认使用 grep -a --text 找到的行返回正确的行(其中 91 行)。

我正在使用 grep 处理字符串的代码,方法是反引号 grep 并将该输出发送到数组。它不寻找“二进制文件...匹配”。所以现在我觉得这不靠谱。grep 似乎不可靠(从没想过我会这么说!)

除了“总是使用-a --text”之外,还有什么想法吗?

标签: grep

解决方案


推荐阅读