grep 遇到二进制数据时的处理
问题
使用 grep 过滤日志时,输出提示:
Binary file (standard input) matches 而非预期的匹配内容。
原因
grep 检测到输入流中包含非文本字节(如空字节 \x00、非法 UTF-8 序列等),将其识别为二进制文件,默认只输出匹配提示而非具体内容。
解决方案
方案 1:强制文本模式(推荐)
bash
tail -f ebox.log | grep -a "\[config" -a / --text 参数强制将输入当作文本处理。
方案 2:过滤二进制字符
bash
tail -f ebox.log | strings | grep "\[config" strings 只提取可打印字符,但会丢失原始格式。
方案 3:指定二进制文件处理方式
bash
tail -f ebox.log | grep --binary-files=text "\[config" 建议
排查日志来源,确认是否有程序输出了非文本内容。