以下を出力するプログラムがあります。
^[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'