如何使日志“非 ANSI 化”?

如何使日志“非 ANSI 化”?

最近,命令行工具倾向于在其日志输出中使用花哨的 ANSI 颜色(例如,NPM 和大量基于 nodejs 的工具、rvm、docker 和一些其他“现代”工具)。

这使得在屏幕上阅读起来很舒服 (*),但当你想将输出管道传输到日志文件或通过不能很好地处理 ANSI 的传输方式时,比如各种远程执行工具和基于 Web 的监控解决方案,情况就不那么好了。许多更成熟的工具至少能够检测到输出是否不是 TTY 并禁用颜色,但那些新奇的“用户友好” CLI 却不行 - 这让我不得不尝试通过将输出管道传输到另一个进程来摆脱 ANSI 颜色。

通过 Sed 输出s/\x1B\[[0-9]*\w//g似乎可以完成工作,但有没有更简洁的方法,只需将正则表达式复制粘贴到我的所有脚本中即可?

(*)至少直到该工具尝试在深色背景终端上以深红色显示错误。

答案1

“ansifilter -p”可能对您有用......

它位于 Fedora 存储库中;-p 指定纯文本输出:

Name        : ansifilter
From repo   : updates
Summary     : ANSI terminal escape code converter
URL         : http://www.andre-simon.de/doku/ansifilter/ansifilter.php
License     : GPLv3+
Description : Ansifilter handles text files containing ANSI terminal escape codes.
            : The command sequences may be stripped or be interpreted to generate formatted
            : output (HTML, RTF, TeX, LaTeX, BBCode).

相关内容