Problem mit SED Regex / Search / Replace

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
petiz
Beiträge: 61
Registriert: 19.04.2009 13:10:10
Wohnort: Hannover

Problem mit SED Regex / Search / Replace

Beitrag von petiz » 29.03.2015 23:11:49

Hallo zusammen, ich möchte auf der Shell mit SED eine XML-Datei (local.xml) manipulieren.

Folgenden Befehl habe ich geschrieben:

sed -i '' -e "s,<host>[^<]*</host>,<host><![CDATA[$sqlhost]]></host>" local.xml

Das Ziel soll sein, dass er in der Datei die Zeichenkette <host> irgendwelche x-beliebigen Zeichen </host> findet, und dann dementsprechend die x-beliebige Zeichenkette durch <![CDATA[$sqlhost]]> ersetzt. Die Variable $localhost existiert und ist auch richtig gesetzt.

Dummerweise bekomme ich jedesmal den Fehler:
sed: 1: "s,<host>[^<]*</host>,<h ...": unescaped newline inside substitute pattern

Googlen hat mir leider nicht so Recht weitergeholfen. Ich erkenne in den "Substitute Pattern" keine neue Zeile, aber vermutlich bin ich auch gerade einfach nur doof 8O :facepalm:


Vielen Dank für eure Hilfe

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: Problem mit SED Regex / Search / Replace

Beitrag von rendegast » 30.03.2015 01:17:29

Das dritte Kontrollzeichen fehlt, in diesem Fall ein Komma.

Beim Editieren von xml vielleicht Debianxmlstarlet interessant?
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

petiz
Beiträge: 61
Registriert: 19.04.2009 13:10:10
Wohnort: Hannover

Re: Problem mit SED Regex / Search / Replace

Beitrag von petiz » 30.03.2015 14:22:12

cool Vielen Dank, jetzt funktioniert alles :)


Mir ging es um eine SED / Regex Lösung da ich SED auch öfters mal für andere Dateien (nicht XML) brauche. Aber Danke für die Alternativlösung, werds im Hinterkopf behalten.

Antworten