ANSI 代码转换器

use*_*890 8 text-processing conversion escape-characters

是否有任何工具可以将带有 ANSI 代码的文本转换为类似文本的输出?tput帽子名称之类的?

查询的原因是我想使用script或类似的方法查看生成的文件,而不必破译 ANSI 序列。我知道一些,但不是全部,文本输出会更容易阅读。

在大多数情况下,我可以查看生成 ANSI 文本的脚本或程序的源代码,但如果有“调试”之类的工具就好了。

最好的可能是 C 变量名,即:

^[[K    ->   <clr_eol>
Run Code Online (Sandbox Code Playgroud)

知道我可以为它写一个脚本......例如:

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' | \
...
Run Code Online (Sandbox Code Playgroud)

这是我对Irssi录音进行的快速测试的一部分。

但是想知道是否有任何现有的工具可以完成这项工作。

作为一个侧面说明,我们有aha安思HTML适配器,它转换ANSI到HTML。但这不是我要找的适配器。


Tho*_*key 5

有人可能会建议一个程序。它不是做一个简单的问题很好

  • “ANSI 序列”在 ECMA-48 中标准化,
  • 您的一些示例(例如光标外观和enter_ca_mode)不在标准中,
  • 一些如enter_ca_mode 1049代码有变体 ( \E7\E[?47h)。如果程序依赖于终端描述,则只会识别其中一个变体,
  • 某些序列是参数化的,这意味着程序必须具有内置规则,或者能够将终端功能(例如\E[%i%p1%d;%p2%dH,可以与输入匹配的正则表达式)转换为正则表达式。

鉴于所有这些,如果有人建议一个程序,它很可能不会解决这些方面,而只是一个没有显示器的终端模拟器。