提问者:小点点

如何将终端输出转换为超文本标记语言文件格式


我在这里用“ansi2html.sh”http://www.pixelbeat.org/scripts/ansi2html.sh来完成我的工作。

ls -lrt /web/htdocs | tail -12 | ./ansi2html.sh --bg=dark >test.html

我在本地主机上使用anable,LinuxOS在多个主机上运行它,在每个远程主机上生成html文件,然后我最终将所有html文件从所有远程拉到我的本地anable服务器。

这适用于所有Linux系统。

然而,"ansi2html.sh"具有gawk的依赖性,其不存在于一组生产AiX 6.1和7的系统上。

我得到这个错误:

./ansi2html.sh[38]: gawk:  not found

由于我的AiX正在托管生产应用程序;不建议安装gawk

我不知道解决方案是否可以从所有AiX主机获取ls-lrt的输出,然后将该输出提供给具有gawk的本地anable linux服务器上的“ansi2html.sh”。不确定这是否会起作用,如果是这样,如何?注意:我希望输出具有与腻子终端提示相同的外观和感觉。

我可以为AiX找到一个解决方案,以便我可以使用anable从所有AiX主机获取具有ls-lrt输出的html文件吗?


共2个答案

匿名用户

(已经写成注释)您可以使用ssh在远程计算机上执行命令并在本地计算机上处理输出。例子:

ssh user@aixhost 'ls -lrt /web/htdocs | tail -12' |
./ansi2html.sh --bg=dark >test.html

标准输入也可以重定向,例如:

ssh user1@host1 'cd frompath; tar -czf - sendme/' |
ssh user2@host2 'cd topath; tar -xzf -'

注意:我对Anable一无所知,但我听说有了它,你几乎可以做任何没有它能做的事情。

匿名用户

使用aha Ansi超文本标记语言适配器执行此任务,效果非常好:

ls -lrt ~ | tail -12 | aha --black --title "Home list"> ls.html

使用html2text的示例

curl https://stackoverflow.com/questions/60465150/how-to-convert-terminal-output-to-html-file-format | html2text | aha --black --title "the SO question"> txt.html

安装:

sudo apt install aha
sudo apt install html2text

这可以使用icon v转换ANSII编码:强制编码从US-ASCII到UTF-8(icon v)

最后,所有这些也可以单独从php中完成,这应该可以在任何地方工作。使用php将html转换为文本的快速基础:

php -r 'echo htmlspecialchars(trim(strip_tags("<div> <b>Hello</b> world</div>")));'
// Hello world

ANSII使用REGEXes从php转换为文本:

$ansii = " |[0m [34m▓▓▓▓▓[0m";
echo preg_replace("/\x1B\[[0-9;]*[JKmsu]/","",$ansii);

https://stackoverflow.com/a/59060531/2494754