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

今天用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機制。。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容