Shell

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

  • January 29, 2015

最近命令行工具傾向於在其日誌輸出中使用花哨的 ANSI 顏色(例如,NPM 和許多基於 nodejs 的工具、rvm、docker 和一些其他“現代”工具)。

這使得在螢幕上閱讀 (*) 變得很好,但當您想通過管道將輸出傳輸到日誌文件或通過不能很好地處理 ANSI 的傳輸(如各種遠端執行工具和基於 Web 的監控解決方案)時就不那麼好了。許多更成熟的工具至少可以檢測輸出何時不是 TTY 並禁用顏色,但不能使用那些新奇的“使用者友好”CLI - 這讓我嘗試通過管道擺脫 ANSI 顏色通過另一個過程輸出。

通過 sed-ing 輸出s/\x1B\[[0-9]*\w//g似乎可以完成工作,但是有沒有一種更簡潔的方法,然後只需將粘貼正則表達式複製到我的所有腳本中?

(*) 至少在該工具嘗試在您的深色背景終端上以深紅色顯示錯誤之前。

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

引用自:https://serverfault.com/questions/659438