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。但这不是我要找的适配器。
有人可能会建议一个程序。它不是做一个简单的问题很好:
1049
代码有变体 ( \E7\E[?47h
)。如果程序依赖于终端描述,则只会识别其中一个变体,\E[%i%p1%d;%p2%dH
,可以与输入匹配的正则表达式)转换为正则表达式。鉴于所有这些,如果有人建议一个程序,它很可能不会解决这些方面,而只是一个没有显示器的终端模拟器。