標準出力では色を維持しますが、Tシャツでは削除してください。

標準出力では色を維持しますが、Tシャツでは削除してください。

コンソールの標準出力でカラー出力を見たいのですが、teeコマンド出力のキャプチャされたコピーからそれを削除したいと思います。私

標準出力に色を書き込むコマンド|ティー文書

ファイルにANSIカラーシーケンスなどがあってはなりません。これはgrep後でログファイルが面白くなるからです。

echo -e "color \033[1;31mRED\033[0m output" | tee test.log

この場合、色はコンソールと「test.log」ファイルに記録されます。

color ^[[1;31mRED^[[0m output

teeファイル出力に対してのみANSIシーケンスを削除する方法はありますか?

私の端末を見ようとしてティーを取得しようとすると、色(環境変数、サブシェル)についてはわかりませんが、teeそれが私に与えたものを幸せにしました。私はコンソール出力の色(人が消費するのに良い)を望んでいますが、出力のログファイルのコピーの色は望ましくありません。

echo -e "color \033[1;31mRED\033[0m output" | TERM=dumb tee test.log ; od -c test.log

たくさんの人を見つけました。考える「パイプツーティー」出力でカラーコードを使用していますが(通常、最初のプログラムが色を表示できることがわかっている場合)、その逆の質問/回答が見つかりませんでした。

答え1

Bashを使用している場合は、次のコマンドを使用してすべての色を削除できます(グラフィック再生)。

echo -e "color \033[1;31mRED\033[0m output" | tee >(sed $'s/\033[[][^A-Za-z]*m//g' > test.log)

またはみんなANSIエスケープシーケンス

echo -e "color \033[1;31mRED\033[0m output" | tee >(sed $'s/\033[[][^A-Za-z]*[A-Za-z]//g' > test.log)

(これをテストしましたが、完全ではありません。)

PSログファイルに追加するには、>> test.log括弧内に追加してくださいtee -a

答え2

そしてzshansi2txtカラーログ1:

標準出力に色を書き込むコマンド>&1 > >(ansi2txt >文書)

zshは、fdが書き込みのために複数回リダイレクトされるときにteeと同様の動作を実装します。


¹同じ名前のパッケージでDebian / Ubuntuにありますが、注意してください。アルゴリズムがかなり粗い、望むよりスクリプト出力から制御文字(コンソールコード/色付き)を削除するより微細でより硬いカラーフィルターの場合。

関連情報