Mehrzeiligen String mittels sed ersetzen

E

Erando

Grünschnabel
Hallo,
ich schreib euch, weil ich gar nicht durchblicke...

ich habe eine jsp-Datei, wo definitiv folgende Zeilen drin stehen:

Code:
<!-- Inhalt -->
<div id="content" class="info-page">

Das möchte ich ersetzen durch:

Code:
<!-- Inhalt -->
<div id="content" class="info-page">
	<cms:contentNodeIterator contentNodeCollectionName="myNewCollection2"> <% /* Used to loop over content, especially paragrpahs (movable, deletable, editable content units) */ %>
		<cms:includeTemplate />
	</cms:contentNodeIterator>
	<cms:newBar contentNodeCollectionName="myNewCollection2"
		paragraph="myTextBlock, samplesHowToJSP, samplesHowToFTL, samplesControlsShowRoom, samplesSearchResult" />

dazu gibt es ja bekanntlich den schönen sed befehl, also dachte ich mir:

Code:
sed 's/<!-- Inhalt -->
<div id="content" class="info-page">/<!-- Inhalt -->
<div id="content" class="info-page">

	<cms:contentNodeIterator contentNodeCollectionName="myNewCollection2"> <% /* Used to loop over content, especially paragrpahs (movable, deletable, editable content units) */ %>
		<cms:includeTemplate />
	</cms:contentNodeIterator>
	<cms:newBar contentNodeCollectionName="myNewCollection2"
		paragraph="myTextBlock, samplesHowToJSP, samplesHowToFTL, samplesControlsShowRoom, samplesSearchResult" />/g' datei.jsp

Da bekomme ich aber leider

sed: -e expression #1, char 17: unterminated `s' command

als Antwort. Diese positionsangabe (1,17) wäre dann mitten im Wort "Inhalt". Das verstehe nicht...da sind bestimmt ein paar Sonderzeichen drin, die maskiert werden müssen, aber 1. verstehe ich nicht, warum er mitten im Wort Inhalt meckert und 2. weiß ich nicht, welche Sonderzeichen maskiert werden müssen.

Bin Anfänger und für jede Hilfe dankbar.
 
ich hab's jetzt mal so probiert:

Code:
STRSEARCH="<!-- Inhalt -->
<div id=\"content\" class=\"info-page\">"
STRREPLACE="<!-- Inhalt -->
<div id=\"content\" class=\"info-page\">

	<cms:contentNodeIterator contentNodeCollectionName=\"myNewCollection2\"> <% /* Used to loop over content, especially paragrpahs (movable, deletable, editable content units) */ %>
		<cms:includeTemplate />
	</cms:contentNodeIterator>
	<cms:newBar contentNodeCollectionName=\"myNewCollection2\"
		paragraph=\"myTextBlock, samplesHowToJSP, samplesHowToFTL, samplesControlsShowRoom, samplesSearchResult\" />"
sed "s/$STRSEARCH/$STRREPLACE/g" datei.jsp

Hab die Sachen also in Variablen gepackt und jedes " mit einem \ maskiert. Kriege aber immer noch die Fehlermeldung...

Code:
sed: -e expression #1, char 17: unterminated `s' command

Wie kann ich die Zeilenumbrüche ausdrücken? \n funktioniert irgendwie nicht...
 
ich hab es jetzt nochmals geändert, weils einfach zu häßlich ist. hab mir platzhalter (%xx%) einbauen lassen, sodass es jetzt so aussieht:
sed -i 's/%CONTENT%/<cms:contentNodeIterator contentNodeCollectionName="myNewCollection2"> <% /\* Used to loop over content, especially paragrpahs (movable, deletable, editable content units) \*/ %><cms:includeTemplate /> </cms:contentNodeIterator> <cms:newBar contentNodeCollectionName="myNewCollection2" paragraph="myTextBlock, samplesHowToJSP, samplesHowToFTL, samplesControlsShowRoom, samplesSearchResult" />/g' datei.jsp
sed -i 's/%CMS_TOP%/<%@ taglib uri="cms-taglib" prefix="cms"%>/g' datei.jsp

der zweite sed-befehl klappt auch schon wie gewünscht, aber beim ersten...

Code:
sed: -e expression #1, char 88: unknown option to `s'

sind da etwa noch sonderzeichen drin? hab schon die zeilenumbrüche entfernt und sonst siehts doch wie der erste befehl aus?!

kann mir niemand helfen?
 
Es lag natürlich an den / im Ersetz-Teil, falls es jemanden interessiert.

Code:
sed -i 's/%CONTENT%/\t<cms:contentNodeIterator contentNodeCollectionName="contentCollection">\n\t\t<cms:includeTemplate \[COLOR="#FF0000"]/[/COLOR]>\n\t<\[COLOR="#FF0000"]/[/COLOR]cms:contentNodeIterator>\n\t<cms:newBar contentNodeCollectionName="contentCollection"\n\t\t paragraph="myTextBlock, samplesHowToJSP, samplesHowToFTL, samplesControlsShowRoom, samplesSearchResult" \[COLOR="#FF0000"]/[/COLOR]>/g' datei.jsp
sed -i 's/%CMS_TOP%/<%@ taglib uri="cms-taglib" prefix="cms"%>/g' datei.jsp

so klappt es.
 
Zurück
Oben