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

您需要转义引号:

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 回答
1

您不需要为此sed从 Perl 调用,使用 Perl 的正则表达式功能,只需使用\Q \E或只是将其转义,例如使用(据我了解,您正在尝试删除"):

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

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