Ich habe eine Datei mit folgendem InhaltEscaping doppelte Anführungszeichen in der Windows-Eingabeaufforderung
$(CP) "$(O_SSL)" "$(INSTALLTOP)\bin"
$(CP) "$(O_CRYPTO)" "$(INSTALLTOP)\bin"
ich die folgenden Zeilen hinzufügen möchten (Reihenfolge spielt keine Rolle)
$(CP) "$(SSL).pdb" "$(INSTALLTOP)\bin"
$(CP) "$(CRYPTO).pdb" "$(INSTALLTOP)\bin"
So, mit perl, habe ich den folgenden Befehl ein (die von der Eingabeaufforderung ausgeführt werden muss):
perl -pi.bak -e 's#\t\$\(CP\) "\$\(O_([^)]+)\)" "\$\(INSTALLTOP\)\\bin"#$&\n\t\$(CP) "\$($1).pdb" "\$(INSTALLTOP)\\bin#g' ntdll.mak
aber bekomme ich nur die folgende E rror
Can't find string terminator "'" anywhere before EOF at -e line 1.
The system cannot find the path specified.
habe ich versucht, die einfachen Anführungszeichen mit doppelten Anführungszeichen zu ersetzen (und die Verdoppelung alle internen doublequotes) als so
perl -pi.bak -e "s#\t\$\(CP\) ""\$\(O_([^)]+)\)"" ""\$\(INSTALLTOP\)\\bin""#$&\n\t\$(CP) ""\$($1).pdb"" ""\$(INSTALLTOP)\\bin""#g" ntdll.mak
aber bekomme ich nur die folgende Fehlermeldung statt
Substitution pattern not terminated at -e line 1.
Wie sollte Ich mache das? (... Ich will keine separate Skriptdatei erstellen, aber ich werde es tun, wenn es gibt keine andere (vernünftig) Art und Weise)
In diesem [quitemeta] (http://perldoc.perl.org/functions/quoteemeta.html), könnte dies Ihr Problem lösen könnte! – AbhiNickz
Mögliches Duplikat von [Wie entkomme ich speziellen Zeichen in einer Zeichenfolge, die ich in eine Perl-Regex interpoliere?] (Http://stackoverflow.com/questions/2156731/how-do-i-escape-special-chars-in-a- -string-i-interpolieren-in-ein-Perl-Regex) – AbhiNickz