コマンド結果をコンソールとファイルに出力したい。このために私は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
。