首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >TelnetClient输出- ANSI

TelnetClient输出- ANSI
EN

Stack Overflow用户
提问于 2016-05-20 16:52:25
回答 1查看 107关注 0票数 0

我在stackoverflow.com上看到过类似的问题和答案

不幸的是,这对我不起作用。我有与前面类似问题中的示例相同的代码,但是“哑巴”终端类型( ANSI = new TelnetClient(“哑巴”)是其他人的解决方案)没有过滤ANSI,所以我得到了这样的结果:

上次登录时间:5月20日10:09:21从172.20.22.244

[01;33mteltest@vivadev[00m:[01;34m~[00m$ ls testing [01;33mteltest@vivadev][00m:[01;34m~[00m$ cd testing [01;33mteltest@vivadev[00m:[01;34m~/testing[00m$ ls

我需要一个可读的文件。有没有其他已知的解决方案,比如编码outputStream之类的?

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2016-05-20 19:13:37

传统的应用程序关注TERM,所以dumb (不使用颜色)可以做你想要的事情。然而,有许多硬编码的应用程序(不需要注释)。

如果您将程序的输出重定向到一个文件,其中一些将抑制颜色,例如

代码语言:javascript
运行
复制
foo >bar

但许多人(可能是大多数行为不端的程序)甚至忽略了这一点。要解决这些问题,您必须通过sed脚本或类似的程序过滤结果,或者(例如)通过重定向或使用script捕获命令的输出,然后对结果进行后处理。例如,您可以使用如下所示的脚本来执行此操作

代码语言:javascript
运行
复制
#!/bin/sh
myscript=$(mktemp)
trap "sed -f $myscript typescript; rm -f $myscript typescript" EXIT INT QUIT HUP
cat >$myscript <<"EOF"
s/^[[[][<=>?]\{0,1\}[;0-9]*[@-~]//g
xample:
s/^[[]][^^[]*^[//g
s/^[[]][^^[]*^[\\//g
:loop
s/[^^[]^[\(.\)/\1/g
t loop
s/  *$//g
s/^.* //g
s/^[[^[]//g
/\1/g
EOF
script -c "$*" >/dev/null

这说明了这种方法。示例中的大多数^[对都是文字ASCII转义字符,您将无法选择/粘贴这些字符。原始的sed脚本在这里:script2log

该脚本的要点在于,它正常运行命令,然后回显过滤结果。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37342223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档