2017-02-13 2 views
0

Ich habe einige XML-Dateien in einem Ordner und ich möchte den Pfad in den Dateien mit einem anderen definiert ersetzen, so dass die ursprüngliche Datei enthält:Zeichenfolge mit Backslash

<Ruta MIMEType="application/pdf">\\srvfsrvivwsk02.preprod.corp\SDD\Cap_Incoming\example.pdf</Ruta> 

Und sollte das Ergebnis sein:

<Ruta MIMEType="application/pdf">\\srvfsrvivwsk35.preprod.corp\SDD2\Cap2_Incoming\Incoming2\example.pdf</Ruta> 

Im mit dem folgenden Befehl versucht, aber es funktioniert nicht:

a='\\srvfsrvivwsk02.preprod.corp\SDD\Cap_Incoming' 
b='\\srvfsrvivwsk35.preprod.corp\SDD2\Cap2_Incoming\Incoming2' 

sed -i 's/'$a'/'$b'/g' exaple.xml 

es scheint die Backslashes nicht wie erwartet funktionieren. Könnten Sie mir bitte dabei helfen?

+0

Das Problem ist, übereinstimmen, dass es in einem Linux-Skript getan werden muss, und geplant, da Dateien ankommen werden jeden Tag – user3270648

Antwort

0

Aufkantung wird das folgende Zeichen entkommen, so dass Sie zwei Schrägstriche \\ verwenden können jeder \

sed 's/\\\\srvfsrvivwsk02.preprod.corp\\SDD\\Cap_Incoming/\\\\srvfsrvivwsk35.preprod.corp\\SDD2\\Cap2_Incoming\\Incoming2/g' example.xml

+0

Es funktionierte gut, aber jetzt muss ich die Variablen verwenden: originalPath = \\\\ srvfsrvivwsk02.preprod.corp \\ SDD \\ Cap_Incoming targetPath = \\\\ srvfsrvivwsk35.preprod.corp \\ SDD2 \\ Cap2_Incoming \\ Incoming2 Irgendwelche Ideen? sed 's/$ originalPfad/$ Zielpfad/g' example.xml – user3270648

Verwandte Themen