一个愚蠢的问题。
我正在尝试使用"$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};
我认为有些角色需要在这里转义。让我知道那些是什么。感谢。
答案 0 :(得分: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);
答案 1 :(得分:1)
你不需要从Perl调用sed
,使用Perl的正则表达式功能,只需使用\Q
\E
或仅使用它来逃避它(根据我的理解,你正在尝试删除"
):
my $str = '"$option">$option_translated';
$str =~ s/"//g;
print $str;