ANSIトランスコーダ

ANSIトランスコーダ

ANSIコードテキストをテキストなどの出力に変換するツールはありますか?tput帽子の名前やそうですか?

尋ねる理由は、script同様の方法を使用してANSIシーケンスを復号化することなく結果ファイルを表示したいからです。すべてではありませんが、一部はテキスト出力が読みやすくなることを知っています。

ほとんどの場合、ANSIテキストを生成するスクリプトやプログラムのソースコードを見ることができますが、「デバッグ」のようなツールがあれば良いでしょう。

一番いいのはおそらくCだろう。変数名、つまり:

^[[K    ->   <clr_eol>

これにスクリプトを書くことができることを知っています。たとえば、次のようになります。

sed 's/$/<newline>/' rec001.txt | \
sed 's/\x07/\n<bell>/g' | \
sed 's/\x1b\[K/\n<clr_eol>/g' | \
sed 's/\x1b\[?12l\x1b\[?25h/\n<cursor_normal>/g' | \
sed 's/\x1b\[\([0-9]\+\);\([0-9]\+\)H/\n<cursor_position(\1, \2)>/g' | \
sed 's/\x1b\[?1049h/\n<enter_ca_mode>/g' | \
sed 's/\x1b\[?25l/\n<cursor_invisible>/g' | \
sed 's/\x0d/<CR>/g' | \
...

これは私が行ったクイックテストの一部です。イルシ記録。

しかし、それを行うための既存のツールがあるかどうか疑問に思います。

参考までに、私たちahaAnsi HTMLアダプタ、ANSIをHTMLに変換します。しかし、これは私が探しているアダプタではありません。


ベストアンサー1

誰かがプログラムを提案するかもしれません。これは小さな問題ではありません。素晴らしい:

  • 「ANSIシーケンス」はECMA-48に標準化されています。
  • カーソル形状と_ca_モードに切り替える)は標準にはありません。
  • たとえば、いくつかは次のとおりです。_ca_モードに切り替える 1049コードが変更されました( \E7\E[?47h)。プログラムが端末記述に依存している場合、バリアントの1つだけが認識されます。
  • 一部のシーケンスはパラメータ化されます。つまり、プログラムには規則が組み込まれているか、端末機能(\E[%i%p1%d;%p2%dH入力に一致する正規表現など)を端末機能に変換できる必要があります。

これらすべてを念頭に置いて、誰かがプログラムを提案した場合、これらの側面を解決することはできず、ディスプレイがないだけの端末エミュレータである可能性が高くなります。

おすすめ記事