Mehrzeiligen String mittels sed ersetzen

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von Erando, 01.11.2011.

  1. Erando

    Erando Grünschnabel

    Dabei seit:
    01.11.2011
    Beiträge:
    4
    Zustimmungen:
    0
    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

    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.
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. Erando

    Erando Grünschnabel

    Dabei seit:
    01.11.2011
    Beiträge:
    4
    Zustimmungen:
    0
    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...
     
  4. Erando

    Erando Grünschnabel

    Dabei seit:
    01.11.2011
    Beiträge:
    4
    Zustimmungen:
    0
    ich hab es jetzt nochmals geändert, weils einfach zu häßlich ist. hab mir platzhalter (%xx%) einbauen lassen, sodass es jetzt so aussieht:
    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?
     
  5. Erando

    Erando Grünschnabel

    Dabei seit:
    01.11.2011
    Beiträge:
    4
    Zustimmungen:
    0
    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.
     
  6. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
Thema:

Mehrzeiligen String mittels sed ersetzen

Die Seite wird geladen...

Mehrzeiligen String mittels sed ersetzen - Ähnliche Themen

  1. mehrzeiligen Text per Skript ersetzen

    mehrzeiligen Text per Skript ersetzen: //ERLEDIGT !!! Hallo Ihr alle, ich habe hier ein kleines Problemchen mit dem ersetzen von mehrzeiligem Text per Skript. was ich machen...
  2. FIND mit UND-Verknüpfung im Suchstring

    FIND mit UND-Verknüpfung im Suchstring: Hallo, ich schaffe es einfach nicht bei folgendem Kommando die Suchoptionen zu erweitern, damit nur Dateien beginnend mit "T_*" aufgelistet...
  3. String auf Konsole ausgeben

    String auf Konsole ausgeben: Hallo zusammen, ich bin auf ein Problem gestoßen dass für mich sehr unverständlich ist, aber vllt übersehe ich auch etwas Offensichtliches. Es...
  4. String einer bestimmten Zeile durchsuchen

    String einer bestimmten Zeile durchsuchen: Hallo, wie kann ich den eine bestimmte Zeile einer Textdatei zerlegen und daraus ein Stück entnehmen? Ich suche nach der Zeile in der "model...
  5. alles außer letzte 4 strings

    alles außer letzte 4 strings: Hallo, ich habe verschieden lange Strings (Dateinamen) und möchte gerne den Dateinamen als Variable ausgeben: 1. Strings...