stdout/stderr カラー出力をクリーンアップする方法

stdout/stderr カラー出力をクリーンアップする方法

以下を出力するプログラムがあります。

^[0;33m"2015-02-09 11:42:36 +0700 114.125.x.x access"^[0m

出力を次のように整理できる組み込みLinuxプログラムはありますか?

"2015-02-09 11:42:36 +0700 114.125.x.x access"

ベストアンサー1

これはANSI制御シーケンスです。少なくとも私が知っている限り、これらのコードを削除する組み込みプログラムはありません。ただし、簡単なsedスクリプトで必要な操作を実行できます。

sed -r 's/\x1b_[^\x1b]*\x1b[\]//g; s/\x1B\[[^m]*m//g'

例の入力に上記の内容を使用します。

$ echo $'\e[0;33m"2015-02-09 11:42:36 +0700 114.125.x.x access"\e[0m'  | sed -r 's/\x1b_[^\x1b]*\x1b[\]//g; s/\x1B\[[^m]*m//g'                    
"2015-02-09 11:42:36 +0700 114.125.x.x access"

OSXまたは他のBSDシステム

OSX(BSD)の場合、sedコマンドはセミコロンで接続できません。試してみてください:

sed -e 's/\x1b_[^\x1b]*\x1b[\]//g' -e 's/\x1B\[[^m]*m//g'

おすすめ記事