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.