カラーリダイレクトなし

カラーリダイレクトなし

重複の可能性:
スクリプト出力から制御文字(コンソールコード/色付き)を削除する

ファイルにリダイレクトするときにすべてのカラーコードを無効にする方法は?

私は以前尋ねました。すべてをファイルにリダイレクトする方法今、色なしでリダイレクトする方法を知りたいです。

だから代わりに:

^[(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'

関連情報