表示形式を維持しながらエスケープシーケンスをテキストに変換するには?

表示形式を維持しながらエスケープシーケンスをテキストに変換するには?

(ANSI?)エスケープシーケンスを含むテキストファイルがあります。

オリジナルファイル

catファイルを入力すると、フォーマットされた出力が表示されます。

フォーマットされた出力

制御コードは削除されますが、フォーマットは維持されるようにテキストファイルの出力を新しいファイルとして保存/パイプするにはどうすればよいですか?

つまり、予想される表示形式を維持しながら、ファイルの内容を新しいファイルに変換/エクスポートしたいと思いますless -r <file>

出力を記録して電子メール通知に送信するには、自動化された方法が必要です。

以下は、上記のスクリーンショットのファイルのBase64出力です(base64 -dデコードに使用されます)。

G1tIG1syShtbMTsxSA0KG1s0OzRIICAgICAgICAgICAgICAgICAgICAgICAgICBDT05GSURFTlRJ
QUwgSU5GT1JNQVRJT04bW0sbWzU7NEgbW0sbWzY7NEgbW0sbWzc7NEhUaGlzIHdvcmsgY29udGFp
bnMgdmFsdWFibGUsIGNvbmZpZGVudGlhbCwgYW5kIHByb3ByaWV0YXJ5IGluZm9ybWF0aW9uLhtb
SxtbODs0SERpc2Nsb3N1cmUsIHVzZSwgb3IgcmVwcm9kdWN0aW9uIGlzIGdvdmVybmVkIGJ5IHlv
dXIgTGljZW5zZSBBZ3JlZW1lbnQuG1tLG1sxMDs0SBtbSxtbMTE7NEhUaGlzIHVucHVibGlzaGVk
IHdvcmsgaXMgcHJvdGVjdGVkIGJ5IHRoZSBsYXdzIG9mIHRoZSBVbml0ZWQgU3RhdGVzIGFuZBtb
SxtbMTI7NEhvdGhlciBDb3VudHJpZXMuICBUaGUgd29yayB3YXMgY3JlYXRlZCBpbiAxOTg4IGFu
ZCByZXZpc2VkIGluIDE5OTQuICAbW0sbWzEzOzRISWYgcHVibGljYXRpb24gb2NjdXJzLCB0aGUg
Zm9sbG93aW5nIG5vdGljZSBzaGFsbCBhcHBseTobW0sbWzE0OzRIG1tLG1sxNTs0SBtbSxtbMTY7
NEggICBDb3B5cmlnaHQgMTk4OCwxOTk0LiBBbGwgcmlnaHRzIHJlc2VydmVkLhtbSxtbMTc7NEgb
W0sbWzE4OzRIG1tLG1sxOTs0SFRoaXMgQ29weXJpZ2h0IG5vdGljZSBhbmQgb3RoZXIgY29weXJp
Z2h0IG5vdGljZXMgaW5jbHVkZWQgaW4gdGhlIG1hY2hpbmUbW0sbWzIwOzRIcmVhZGFibGUgY29w
aWVzIG11c3QgYmUgcmVwcm9kdWNlZCBvbiBhbGwgYXV0aG9yaXplZCBjb3BpZXMuG1tLG1syMTs0
SBtbSxtbMjI7NEhUaGlzIGlzIGEgcmVnaXN0ZXJlZCB0cmFkZW1hcmsuG1tLDQo=

ベストアンサー1

最善の方法は、端末エミュレータにこれらのシーケンスを解釈し、結果のテキスト部分をダンプするように指示することです。

screenスクリプトで簡単にやり取りできる端末エミュレータの1つです。次のことができます。

INPUT=file.txt OUTPUT=output.txt screen -Dmc /dev/null sh -c '
  screen -X scrollback 100000
  cat < "$INPUT"
  screen -X hardcopy -h "$OUTPUT"'

-mこれにより、空のonfigファイル()を使用して新しい()エッチング画面セッションが開始されます。そこで、画面ウィンドウでインラインスクリプトを実行し、スクロールバックサイズを大きくし(ここでは出力は1つの画面に収まりますが)、入力ファイルを画面ウィンドウにダンプしてから出力にスクロールするなど、ダンプ画面の内容を呼び出します。ファイル。Dc/dev/nullshhardcopy -h

おすすめ記事