环境
centos7.9
背景
最近在linux下使用cat,tail等查看日志时会报 《配到二进制文件 (标准输入)》,然后就没有任何输出,通常这些日志是中文英文混打印的 如 使用vi进日志后能查看中文格式的内容
原因
那是因为在Linux系统中,使用tail和grep命令来查找中文格式的log时,遇到《Binary file (standard input) matches》或 《配到二进制文件 (标准输入) 》 这样的错误,通常是因为你正在尝试在一个二进制文件上执行文本搜索。grep默认情况下会忽略二进制数据,因为它可能会导致不可预知的结果。
解决
如果你确定你想在二进制文件中进行搜索,并且你知道该文件是可读的(例如,它可能是一个以二进制格式存储的文本数据),你可以使用grep的-a选项来强制其处理二进制数据。这将告诉grep把所有输入都当作文本处理,即使它含有二进制字符。
以下是如何使用-a选项的例子:
tail -n 100 /path/to/logfile | grep -a "关键词"