如何保存包含混合ascii内容的Perl / Expect输出?

时间:2014-11-07 18:09:33

标签: perl character-encoding expect text-processing

我有一个perl脚本,它使用expect库登录到远程系统。我正在使用before方法获得交互的最终输出:

$exp->before();

我将其保存为文本文件。当我在文件上使用cat时,它在终端中输出正常,但是当我在编辑器中打开文本文件或尝试处理它时,格式化是奇怪的:

  <[H] [H [2J [1; 19年1月14日的终身监督活动] [11; 1H

有更好的方法来保存输出吗?

当我运行enca时,它被识别为:

  

7位ASCII字符

     

被非文本数据包围/混合

2 个答案:

答案 0 :(得分:0)

你可以删除非ascii字符。

$str1 =~ s/[^[:ascii:]]//g;
print "$str1\n";

答案 1 :(得分:0)

我可以使用Text :: ANSI :: Util库的ta_strip()函数从输出中删除ANSI转义码:

my $ansi_string = $exp->before();
my $clean_string = ta_strip($ansi_string);