2016-03-23 15 views
0

Ich versuche, ein Attribut in einem XML-Code mit ausschließlich sed zu ersetzen.Ersetzen Xml-Attribut mit einer Zeichenfolge mit Schrägstrichen

Ich habe bereits auf StackOverflow eine Methode gefunden, die auf einem Attribut bestehend aus Buchstaben funktioniert. Es funktioniert jedoch nicht für Attribute, die Schrägstriche enthalten /.

Die XML ich habe:

<?xml version="1.0" encoding="UTF-8"?> 
<Environment WorkingFolder="" Provider=""> 
    <tag> 
    </tag> 
</Environment> 

Ich versuche, so zu ersetzen WorkingFolder="" mit WorkingFolder="/some/path/"

So würde die XML aussehen:

<?xml version="1.0" encoding="UTF-8"?> 
<Environment WorkingFolder="/some/path/" Provider=""> 
    <tag> 
    </tag> 
</Environment> 

Ich erhalte eine Fehlermeldung, wenn ich versuchen Sie einfach:

sed -E 's/WorkingFolder="[^"]*"/WorkingFolder="/some/path/"/' file.xml 

Wegen der Schrägstriche /.

Also, was ich ist ein weiterer sed Befehl die Schrägstriche / zu entkommen tat verwendet:

path=$(echo /some/path/ | sed 's_/_\\/_g') 

sed -E 's/WorkingFolder="[^"]*"/WorkingFolder="$path"/' file.xml 

Das Problem ist jetzt, dass die $path Variable ' wegen der Apostroph nicht erweitern.

Antwort

1

Versuchen Sie folgendes:

sed -E 's|WorkingFolder="[^"]*"|WorkingFolder="/some/path/"|' file.xml 
Verwandte Themen