perl使用语法突出显示保存命令输出

时间:2012-11-01 21:24:34

标签: perl terminal

我想在终端运行命令并捕获输出,所以我正在使用

my $output = `command`;

问题是命令有语法高亮,所以我稍后打印,我松开了语法高亮,而是得到诸如

之类的东西
print $output; 

结果

 ←[31merror←[39m ←[

如何在没有语法高亮显示的情况下获取命令,或者以某种方式获得在打印时显示的语法高亮显示。

1 个答案:

答案 0 :(得分:1)

尝试此操作从shell输出中删除ANSI颜色转义符:

my $output = `command`;
my $output =~ s/\e\[[\d;]*m//g;
print "$output","\n";

如果要删除所有ANSI转义序列,请将regexp替换为:

s/\e\[?.*?[\@-~]//g