#author("2017-03-05T19:48:32+09:00","","")
#navi(../)
* エスケープカラーシーケンスをテキストから除く方法 [#wc1f3dd8]
grep --colorなどのオプションで出力されたテキストをファイル化したとき、エスケープシーケンスで~
色が含まれた状態で保存された場合の対処方法です。~
尚、本資料は以下のサイトを参考にさせていただきました。
-[[ANSI カラーシーケンスを除去するコマンド>http://d.hatena.ne.jp/kitokitoki/20111225/p5]]

#htmlinsertpcsp(linux_ads_top.html,linux-sp.html)
#contents
-[[ANSI カラーシーケンスを除去するコマンド>http://d.hatena.ne.jp/kitokitoki/20111225/p5]]

* 参考サイト [#w0dc227a]

* sedを使ってカラーシーケンスを削除する [#fd08985c]
上記でも記述したサイトのsedコマンドを紹介させていただきます。~
以下のようにすれば、カラーシーケンスを含んだテキストファイルがからカラーシーケンスを除去することができます。
 cat カラーシーケンスを含んだテキストファイル | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g" > 出力ファイル名

* 実際にカラーシーケンスを含んだファイルで試してみる [#mac0b08c]
実際にカラーシーケンスを含むファイルで実行してみます。

** カラーシーケンスを含むファイルの確認 [#rb592e40]

以下のスクリーンショットの通り、catすると色がついて表示されます。
#ref(01.png)
#br
また、vi(vim)でファイルを開くとエスケープシーケンスが含まれているのが確認できます。
#ref(02.png)
#br

** sedでカラーシーケンスを除去する [#g9b7d2cc]
 sakura@cygwin ~$ cat include_esc_color.txt | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g" > out.txt
 
 sakura@cygwin ~$ cat out.txt
 2016-04-12      Windows 500
 2016-05-03      macOS   700
 2016-05-03      Linux   440
 2016-05-04      *BSD    1000
 2016-05-24      Android 300
 2016-06-04      iOS     80

vi(vim)で開くと除去されているのが確認できます。
#ref(03.png)

* aliasなどに登録すると便利 [#d71678a8]
上記のsedコマンドを以下の様にaliasに登録すると便利に使用できます。
 alias color_strip='sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g"'

以上、sedを使ってカラーシーケンスを削除する方法でした。

#htmlinsertpcsp(linux_ads_btm.html,linux-sp.html)


トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS