grep小技巧之匹配到二进制文件

我们在日常使用grep这个强大的命令行工具时有时候会碰到一个问题,就是grep在识别文件的时候在碰到 ‘\000 NUL’的时候会认为文件是二进制文件,就不进行识别了,碰到这种情况我们可以使用 grep -a 或者 grep --text
比如我们做个小实验

1
2
3
4
<?php
$content = file_get_contents('input.txt');
$binary = "\0" . $content; // 添加 NUL 字符到开头
file_put_contents('output.bin', $binary);

然后我们就有了 output.bin 这个二进制文件
本身 input.txt 的内容也很简单

1
2
12345
12345

我们尝试用 grep 查找其中的内容,

就会出现这个问题
当我们加上了 -a 或者 --text 就是指定 grep 需要在包含二进制文件格式中或者将文件当做是文本文件来识别匹配