重複の可能性:
スクリプト出力から制御文字(コンソールコード/色付き)を削除する
ファイルにリダイレクトするときにすべてのカラーコードを無効にする方法は?
私は以前尋ねました。すべてをファイルにリダイレクトする方法今、色なしでリダイレクトする方法を知りたいです。
だから代わりに:
^[(B^[[m^[[1m^[[31m:: ^[(B^[[m^[[1mDaemon script ^[(B^[[m^[[1m^[[31mntpd^[(B^[[m^[[1m does not exist or is not executable.^[(B^[[m
単に実装しようとしています。
:: Daemon script ntpd does not exist or is not executable.
修正する:
jw013が提供したリンクを見て、次のことを試しましたsed
。
rc.d restart ntpd | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g" &> progress.txt
ただし、リダイレクトせずに色付きの出力をコンソールに表示するだけです。
アップデート2:
user1146332のコメントに従ってSTDERRをパイプするにはパイプが必要です|&
。
rc.d restart ntpd | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g" &> progress.txt
結果:
^[(B:: ^[(BDaemon script ^[(Bntpd^[(B does not exist or is not executable.^[(B
よりクリーンですが、まだいくつかのコードが保持されます。しかし、そのsed
正規表現は私が解読するのは難しいです。
答え1
Arch Linuxを実行しているので、USECOLOR変数をエクスポートできます。
%> export USECOLOR="no" # color-less
%> /etc/rc.d/ntpd stop
そしてsedを利用して色を除去する技術は、
rc.d stop ntpd | sed -r "s:\x1B\[[0-9;]*[mK]::g"
ただし、これはrc.dによって生成されたバックスペースを処理できません。
答え2
単純でおそらくより一般的なアプローチは、TERM変数を「vt100」などの色をサポートしない変数に変更することです。
答え3
カラーコードのフォーマットがどのように指定されているのかわかりませんが、一度試してみてください。
command | awk '{gsub(/\^[^Bm]*[Bm]/,"")}1'