grep --colorなどのオプションで出力されたテキストをファイル化したとき、エスケープシーケンスで
色が含まれた状態で保存された場合の対処方法です。
尚、本資料は以下のサイトを参考にさせていただきました。
上記でも記述したサイトのsedコマンドを紹介させていただきます。
以下のようにすれば、カラーシーケンスを含んだテキストファイルがからカラーシーケンスを除去することができます。
cat カラーシーケンスを含んだテキストファイル | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g" > 出力ファイル名
実際にカラーシーケンスを含むファイルで実行してみます。
以下のスクリーンショットの通り、catすると色がついて表示されます。
また、vi(vim)でファイルを開くとエスケープシーケンスが含まれているのが確認できます。
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)で開くと除去されているのが確認できます。
上記のsedコマンドを以下の様にaliasに登録すると便利に使用できます。
alias color_strip='sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g"'
以上、sedを使ってカラーシーケンスを削除する方法でした。