将ANSI转义序列(终端格式/颜色代码)转换为HTML的库

94
我正在寻找一个代码库,可以将ANSI转义序列转换为HTML颜色,通过普通的<span>标签或CSS。例如,将以下内容转换为:

ESC[00mESC[01;34mbinESC[00m
ESC[01;34mcodeESC[00m
ESC[01;31mdropbox-lnx.x86-0.6.404.tar.gzESC[00m
ESC[00mfooESC[00m

这样:

<span style="color:blue">bin</span>
<span style="color:blue">code</span>
<span style="color:red">dropbox-lnx.x86-0.6.404.tar.gz</span>
foo

将换行符转换为<br/>并不是必要的,只是我不知道转义代码。我可以自己搞定,但我可能会错过一些重要的下划线或弄乱背景颜色的工作方式。我宁愿在别人的代码基础上进行。

是否存在这样的工具(命令行Linux)或库(最好是Perl、Python或Ruby)?


1
很棒的问题和有价值的答案集! - cxw
1
ANSI4J 是一个 Java 库,用于解析 ANSI 函数并生成 CSS 声明。因此,我们可以将文本和 CSS 样式分开处理。 - Pavel_K
3个回答

106

aha 是一个C语言程序,可在Ubuntu软件包中获得,在 http://ziz.delphigl.com/tool_aha.php 或 Github https://github.com/theZiz/aha 上获取。它可以通过管道或文件输入带有终端颜色的内容,并将符合(w3c规范)的 HTML 文件输出到 stdout。例如:

ls --color=always | aha > ls-output.htm
或者
ls --color=always | aha --black > ls-output.htm

为了达到类似终端的黑色背景效果。

通过“make”进行编译,并将其放置在任何您想要的位置。

获得反馈将会很棒。;-)


2
IcanDivideBy0 漏掉了一些内容:Alexander Matthes 的帖子中的“德国链接”仍然有效。原始帖子中在“ziz”之前有一个错误的空格;请使用 http://ziz.delphigl.com/tool_aha.php。此外,Alexander 的链接指向:-源代码位于 http://ziz.delphigl.com/data/aha-src-0.4.4.tar.gz,以及-其他 Debian 包位于 http://packages.debian.org/search?keywords=aha*(删除“:”后面添加的空格,因为我没有权限在帖子中包含超过 2 个链接。)* - Der Schley
7
有一个适用于Ubuntu的aha软件包。 - Maxim Razin
1
只是想提醒其他人,这个应用程序的 Github 存储库在 OS X 上编译和运行都没有问题。 :) - masukomi
3
我刚为aha添加了Homebrew拉请求。如果被接受,就可以在Mac上通过简单的brew update && brew install aha命令安装aha了。 - Nightscape
2
据我所知,它似乎只处理16种颜色。 - Gringo Suave
显示剩余2条评论

24

2
受到pixelbeat和blackjack的工作启发并开发而来。我更喜欢这个版本,-i选项非常棒 :) - DavidGamba
太棒了!两者都支持256种颜色。已点赞。 - jamadagni
pixelbeat的ansi2html.sh对我非常有用! - cxw
不再局限于 Bourne,现在有 deb、yum、apt 包可用:https://pypi.python.org/pypi/ansi2html/1.0.7 - hobs

17

10
这个模块安装了可以将输入通过管道转换成HTML格式的ansi2html。ls --color | ansi2html -p > my_web_page.htmlls --color | ansi2html > my_snpipet_code-no_header-footer.html但我更喜欢来自pixelbeat的ansi2html.sh的默认输出。 - Pablo Marin-Garcia

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接