我想在终端运行命令并捕获输出,所以我正在使用
my $output = `command`;
问题是命令有语法高亮,所以我稍后打印,我松开了语法高亮,而是得到诸如
之类的东西print $output;
结果
←[31merror←[39m ←[
如何在没有语法高亮显示的情况下获取命令,或者以某种方式获得在打印时显示的语法高亮显示。
答案 0 :(得分:1)
尝试此操作从shell输出中删除ANSI颜色转义符:
my $output = `command`;
my $output =~ s/\e\[[\d;]*m//g;
print "$output","\n";
如果要删除所有ANSI转义序列,请将regexp替换为:
s/\e\[?.*?[\@-~]//g