STDINをSTDOUTに渡してカラーコードを削除するプログラムはありますか?

STDINをSTDOUTに渡してカラーコードを削除するプログラムはありますか?

カラー出力を生成するコマンドがあり、それをファイルにパイプしてカラーコードを削除したいと思います。catカラーコードを削除することを除いて、同様に機能するコマンドはありますか?私は次のことをする予定です。

$ command-that-produces-colored-output | stripcolorcodes > outfile

ベストアンサー1

これを達成するためのユーティリティがあると思うかもしれませんが、見つかりません。ただし、このPerlステートメントはトリックを実行する必要があります。

perl -pe 's/\e\[?.*?[\@-~]//g'

例:

$ command-that-produces-colored-output | perl -pe 's/\e\[?.*?[\@-~]//g' > outfile

または、スクリプトが必要な場合は、次のように保存できますstripcolorcodes

#! /usr/bin/perl

use strict;
use warnings;

while (<>) {
  s/\e\[?.*?[\@-~]//g; # Strip ANSI escape codes
  print;
}

脱がしたいならただカラーコードを保存し、他のANSIコード(カーソル移動など)を維持するには、次のようにします。

s/\e\[[\d;]*m//g;

上記で使用した代替コードの代わりに(すべてのANSIエスケープコードを削除)

おすすめ記事