美文网首页Linux学习之路我用 LinuxLinux与后台开发归档
grep文本文件提示“匹配到二进制文件”

grep文本文件提示“匹配到二进制文件”

作者: Michaelbest1 | 来源:发表于2018-01-11 17:29 被阅读1673次

今天用grep查log遇到了一件哔了狗的事。

我用vim打开log文件,里面有sysTid=3800这一行。但是grep "sysTid=3800" filename竟然找不到!

然后我grep "sysTid=xxxxx" xxxxx是另外一个数字,可以找到。。。另外如果用egrep "*sysTid.*3800*"也可以找到。。。简直哔了狗好吗!

一开始以为我是不是正则表达式用错了,是不是=要转义才行。但怎么查都不需要,而且加了\也一样不行。

后来注意到,搜索并不是完全没有结果,而是提示匹配到二进制文件。难道实际上已经匹配了,但grep认为是二进制文件?

于是去谷歌搜egrep match binary file,果然grep如果碰到\000 NUL字符,就会认为文件是二进制文件。必须加上-a或--text选项强制让grep认为是文本文件才可以看到正常的结果。

问题本身是解决了,但本质还没有完全搞清楚:为什么搜索其它的字符串不会有这个提示?为什么egrep "*sysTid.*3800*"也不会有这个提示?

让人费解的grep机制。。

相关文章

  • grep文本文件提示“匹配到二进制文件”

    今天用grep查log遇到了一件哔了狗的事。 我用vim打开log文件,里面有sysTid=3800这一行。但是g...

  • linux: grep

    用‘grep’搜索文本文件如果您要在几个文本文件中查找一字符串,可以使用‘grep’命令。‘grep’在文本中搜索...

  • admin08-grep检索工具

    grep过滤操作 按条件检索文本行find不能找文本文件内容, grep可以检索文本文件内容根据字符串模式提取...

  • 10-文件的操作

    文本文件和二进制文件 文本文件可以使用文本编辑器查看,本质还是二进制文件。二进制文件保存的文件不是给人直接阅读的,...

  • 进击的NDK04-文件IO

    读取文本文件 写入文本文件 计算机的文件存储在物理上都是二进制 文本文件和二进制之分,其实是一个逻辑之分C读写文本...

  • 二进制文件与文本文件的区别

    原文 文本文件和二进制文件的定义: 计算机在物理内存上面存放的都是二进制,所以文本文件和二进制文件的主要区别是在逻...

  • 0基础学习C语言第十一章:文件读写

    今天我们将介绍 C 程序员如何创建、打开、关闭文本文件或二进制文件。 一个文件,无论它是文本文件还是二进制文件,都...

  • node基本模块之fs

    异步方式 读取文本文件 读取二进制文件

  • javase part21 IO流

    在计算机中文件的分类 二进制文件文本文件 在java中流的分类 字节流:操作二进制文件字符流: 操作文本文件 流:...

  • C语言 IO操作

    读取文件 写入文本文件 文件复制 计算机的文件存储在物理上都是二进制 文本文件和二进制之分,其实是一个逻辑之分 C...

网友评论

    本文标题:grep文本文件提示“匹配到二进制文件”

    本文链接:https://www.haomeiwen.com/subject/znltoxtx.html