Linux环境下如何处理script命令生成的日志文件,使其可被grep正常搜索?
解决
script日志被grep识别为二进制文件的问题 我之前也碰到过一模一样的情况,明明用编辑器和more都能正常看的日志,grep却偏说它是二进制文件,真的挺闹心的!
为什么会出现这种情况?
script命令会完整记录终端的所有输出,包括那些你肉眼看不到的终端控制字符(比如颜色转义码、光标移动指令)。这些非ASCII的特殊字符,让grep判定它是二进制文件,尽管文本编辑器和more会自动解析忽略这些控制字符,让你看到正常的文本内容。
几种快速解决方法
- 强制grep按文本处理:直接给grep加
-a参数,它就会把文件当成纯文本搜索,不管里面有没有控制字符:grep -a -i error LOG_FILE - 清理现有日志的控制字符:用
col命令过滤掉日志里的控制字符,生成一个干净的文本文件再搜索:# 清理日志到新文件 col -b < LOG_FILE > CLEAN_LOG_FILE # 搜索干净的日志 grep -i error CLEAN_LOG_FILE - 用strings提取可打印文本:
strings命令会提取文件中所有可打印的文本字符串,再配合grep搜索:strings LOG_FILE | grep -i error
内容的提问来源于stack exchange,提问作者JB_User
相关产品推荐
相关产品推荐

