grep - 为什么 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”之外,还有什么想法吗?
解决方案
推荐阅读
- python - 使用python从多个zip文件中提取注释
- sql - 如何获取在 SQL 中具有重复列组合的记录?
- javascript - AES/CBC/PKCS5PADDING IV - 从 Java 到 NodeJs 的解密
- python - Windows Hello IR 摄像头可以用于开发目的吗?
- docker - 使用 Docker 配置 Kibana 监控
- arrays - 使用 2D 数组作为 3D 数组的索引
- c - 将 void * 指针变量类型转换为 unsigned int 到 uint32 时出现编译时错误
- json - 将 xml 输入转换为 json 格式,跳过父键但将其值处理给子键
- javascript - 这是 setState({scale: 'c', temperature}) 好吗?
- javascript - 如何在谷歌地图上添加两个位置的标记?