如何“un-ANSI-fy”日志?

最近,命令行工具在其日志输出(例如,NPM和一系列基于nodej的工具,rvm,docker以及其他一些“现代”工具)中使用了特殊的ANSI颜色。

这使得在屏幕(*)上阅读是很好的,但是当你想要将输出传送到日志文件或者通过不能很好地处理ANSI的传输时,就不那么好了,就像各种远程执行工具和基于web的监控解决scheme一样。 许多更成熟的工具至less有正确的检测输出不是TTY和禁用颜色,但不是与那些新的“用户友好”CLI命令 – 这让我试图通过pipe道摆脱ANSI颜色输出通过另一个过程。

通过s/\x1B\[[0-9]*\w//g来输出输出似乎可以完成任务,但有没有更s/\x1B\[[0-9]*\w//g方法,只需将正则expression式粘贴到所有脚本中?

(*)至less在工具尝试在深色背景terminal上以深红色显示错误之前。

“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).