0

愚かな質問です。

を検索して置換しようとして"$option">$option_translated$option>$option_translatedます。

UNIX端末でこのコマンドを実行すると、正常に動作します。

sed -i 's/"$option">$option_translated/$option>$option_translated/g' filename.txt

しかし、Perl スクリプトで使用すると機能しません

my $cmd = ("sed -i 's/"$option">$option_translated/$option>$option_translated/g' $filename");
qx{$cmd};

ここで一部の文字をエスケープする必要があると思います。それらがどれか教えてください。ありがとう。

4

2 に答える 2

1

sedそのためにPerlから呼び出す必要はありません。Perlの正規表現機能を使用し、使用する\Q \Eか、単に使用するだけでエスケープします(私の理解では、を削除しようとしています"):

my $str = '"$option">$option_translated';

$str =~ s/"//g;
print $str;
于 2012-10-08T10:28:36.660 に答える
1

引用符をエスケープする必要があります。

my $cmd = ("sed -i 's/\"$option\">$option_translated/$option>$option_translated/g' $filename");
                here__^      __^

または、代わりに別の引用演算子を使用します"。例:

my $cmd = qq(sed -i 's/"$option">$option_translated/$option>$option_translated/g' $filename);
于 2012-10-08T10:12:14.903 に答える