2

ターミナルでコマンドを実行して出力をキャプチャしたいので、使用しています

my $output = `command`;

問題は、コマンドに構文の強調表示があるため、後で印刷して構文の強調表示を失い、代わりに次のようなものを取得することです。

print $output; 

結果

 ←[31merror←[39m ←[

構文を強調表示せずにコマンドを取得する方法、または構文の強調表示を印刷時に表示する方法を教えてください。

4

1 に答える 1

1

シェル出力からANSIカラーエスケープを削除するには、これを試してください:

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

すべての ANSI エスケープ シーケンスを削除する場合は、正規表現を次のように置き換えます。

s/\e\[?.*?[\@-~]//g
于 2012-11-04T06:47:46.510 に答える