コンソール出力の代わりにファイルから文字を削除します。

コンソール出力の代わりにファイルから文字を削除します。

コマンド結果をコンソールとファイルに出力したい。このために私はtee。試してみましたが、sed -e 's/\x1b\[[0-9;]*m//g'着色とESCの両方を削除しました。

答え1

おそらくファイルをキャプチャし、ファイルを後処理して完了したら、不要な文字を削除します。

これをすぐに実行する必要があり、>(...)プロセス置換()を含むシェルを使用している場合は、次のいずれかを使用して次のようにファイル出力をフィルタリングできますtee

some-command | tee >( sed -e 's/\x1b[[0-9;]m//g' >file )

some-command端末に接続していなくてもカラーテキストが出力され続けると仮定すると、sedコマンドを使用して出力をフィルタリングし、変更された出力を名前付きファイルに渡しますfile。変更されていない出力もsome-command予想通り標準出力に渡されます。tee

プロセスを交換せずに、sed次のように単独で使用できます。

some-command | sed -n -e p -e 's/\x1b[[0-9;]m//g' -e 'w file'

sedこれは、変更されていない行を標準出力(使用p)として出力し、代替式を使用して変更するために使用されます。最後に変更された行はfileコマンドで作成されますw。オフを使用して、スクリプトの最後で変更された行のデフォルト出力を編集します-n

関連情報