0
我有以下内容转义双引号命令提示符
$(CP) "$(O_SSL)" "$(INSTALLTOP)\bin"
$(CP) "$(O_CRYPTO)" "$(INSTALLTOP)\bin"
我想添加如下的文件(顺序并不重要)
$(CP) "$(SSL).pdb" "$(INSTALLTOP)\bin"
$(CP) "$(CRYPTO).pdb" "$(INSTALLTOP)\bin"
所以,用perl,我创建了下面的命令(必须从命令提示符下运行):
perl -pi.bak -e 's#\t\$\(CP\) "\$\(O_([^)]+)\)" "\$\(INSTALLTOP\)\\bin"#$&\n\t\$(CP) "\$($1).pdb" "\$(INSTALLTOP)\\bin#g' ntdll.mak
但我只是得到了以下电子RROR
Can't find string terminator "'" anywhere before EOF at -e line 1.
The system cannot find the path specified.
我试图用双引号代替单引号(和加倍所有内部双引号)为使
perl -pi.bak -e "s#\t\$\(CP\) ""\$\(O_([^)]+)\)"" ""\$\(INSTALLTOP\)\\bin""#$&\n\t\$(CP) ""\$($1).pdb"" ""\$(INSTALLTOP)\\bin""#g" ntdll.mak
,但我只是得到下面的错误,而不是
Substitution pattern not terminated at -e line 1.
应该如何我这样做? (......我不希望创建一个单独的脚本文件,但我会做到这一点,如果没有其他的(合理的)方式)
看看这个[quotemeta](http://perldoc.perl.org/functions/quotemeta.html),可能是这可以解决你的问题! – AbhiNickz
[我如何在字符串中插入特殊字符,我插入到Perl正则表达式中?]可能的副本(http://stackoverflow.com/questions/2156731/how-do-i-escape-special-chars-in-a -string-I-内插成 - 一个-perl的正则表达式) – AbhiNickz