sed in xml datei

Diskutiere sed in xml datei im Shell-Skripte Forum im Bereich Programmieren unter Linux/Unix; Hallo, ich habe ein solches XML-Muster: cat config.xml <server target=instance1> <serrverpanel> bla </serverpanel>...

  1. mondo

    mondo Grünschnabel

    Dabei seit:
    15.03.2007
    Beiträge:
    4
    Zustimmungen:
    0
    Hallo,

    ich habe ein solches XML-Muster:
    Code:
     cat config.xml 
    <server target=instance1>
        <serrverpanel>
    	bla 
        </serverpanel>
        <serverinstance>
    	bla
        </serverinstance>
    	<service name=test1>
    		blubb
    	</service>
    	<service name=test2>
    		blubb
    	</service>
    	<service name=test3>
    		blubb
    	</service>
    </server>
    <server target=instance2>
        <serrverpanel>
    	bla 
        </serverpanel>
        <serverinstance>
    	bla
        </serverinstance>
    	<service name=test1>
    		blubb
    	</service>
    	<service name=test2>
    		blubb
    	</service>
    	<service name=test3>
    		blubb
    	</service>
    </server>
    <server target=instance3>
        <serrverpanel>
    	bla 
        </serverpanel>
        <serverinstance>
    	bla
        </serverinstance>
    	<service name=test1>
    		blubb
    	</service>
    	<service name=test2>
    		blubb
    	</service>
    	<service name=test3>
    		blubb
    	</service>
    </server>
    
    Ich möchte nun ein solches "serrvice-chapter" einfügen und zwar abhängig vom target name im serrver.
    Zum Beispiel soll in instance2 dies hier rein:
    Code:
    	<service name=test4>
    		ich bin neu
    	</service>
    
    Ob unten oder oben ist egal. Das ganze versuche ich unter Unix.

    Vielen Dank!
     
  2. #2 fresh$free, 04.10.2013
    fresh$free

    fresh$free Jungspund

    Dabei seit:
    03.10.2013
    Beiträge:
    22
    Zustimmungen:
    0
    1. Das oben ist kein xml
    Das hier ist xml:
    Code:
    cat config.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <serverpark>
    <server target='instance1'>
       <serverpanel>bla</serverpanel>
       <serverinstance>bla</serverinstance>
       <service name="test1">blubb</service>
       <service name="test2">blubb</service>
       <service name="test3">blubb</service>
    </server>
    <server target='instance2'>
       <serverpanel>bla</serverpanel>
       <serverinstance>bla</serverinstance>
       <service name="test1">blubb</service>
       <service name="test2">blubb</service>
       <service name="test3">blubb</service>
    </server>
    <server target='instance3'>
       <serverpanel>bla</serverpanel>
       <serverinstance>bla</serverinstance>
       <service name="test1">blubb</service>
       <service name="test2">blubb</service>
       <service name="test3">blubb</service>
    </server>
    </serverpark>
    

    2. Nimmt dafür einen xmlparser einer entspr. Lib/Klasse von diversen Scriptsprachen. Als Kommandozeilentool nimmt man z.B. xmlstarlet, das kann nicht nur abfragen wie die meisten Wrapper dieser Libs sondern auch Änderungen:
    Code:
    xmlstarlet ed -s "//server[@target='instance2']"  -t elem -n "service" -v "ich bin neu" \
                  -i "//server[@target='instance2']/node()[last()]" -t attr -n name -v "test4" ./config.xml
    
    das liefert dann:
    Code:
    ...
    <server target="instance2">
        <serverpanel>bla</serverpanel>
        <serverinstance>bla</serverinstance>
        <service name="test1">blubb</service>
        <service name="test2">blubb</service>
        <service name="test3">blubb</service>
        <service name="test4">ich bin neu</service>
      </server>
    ...
    
    Musste halt noch die Ausgabe umleiten in ein neues File....
     
  3. #3 Spröde, 04.10.2013
    Spröde

    Spröde Alter Sack

    Dabei seit:
    22.01.2012
    Beiträge:
    175
    Zustimmungen:
    0
    Code:
    sed -i '/<server target=instance2>/,/<\/server>/{s/<\/server>/\t<service name=test4>\n\t\tich bin neu\n\t<\/service>\n&/}' config.xml
     
  4. #4 fresh$free, 04.10.2013
    fresh$free

    fresh$free Jungspund

    Dabei seit:
    03.10.2013
    Beiträge:
    22
    Zustimmungen:
    0
    Wieso verschwindet hier immer meine Antwort?
     
  5. #5 Spröde, 05.10.2013
    Spröde

    Spröde Alter Sack

    Dabei seit:
    22.01.2012
    Beiträge:
    175
    Zustimmungen:
    0
    Ach du liebe Güte, da falle ich auf einen Leichenschänder rein, der den Thread nach oben gepusht hat. :O
     
Thema:

sed in xml datei

Die Seite wird geladen...

sed in xml datei - Ähnliche Themen

  1. Anlage einer SWAP-Datei unter CentOS 7 funktioniert nicht

    Anlage einer SWAP-Datei unter CentOS 7 funktioniert nicht: Hallo zusammen, ich verwende einen vServer von Strato (Linux V30) mit CentOS 7 64bit. Hier wollte ich nun einen SWAP-Speicher mit 8GB anlegen -...
  2. Dateiinhalt verdoppeln

    Dateiinhalt verdoppeln: Hallo, ich möchte den Inhalt einer Datei verdoppeln, Kopf- und Endesatz ausgenommen. Danach muss im Endesatz die Datensatzanzahl angepasst werden...
  3. Dateien in Unix finden, die mehrere Strings beinhalten

    Dateien in Unix finden, die mehrere Strings beinhalten: Hallo liebe Leute, ich versuche über die Shell unter Unix alle Dateien ausfindig zu machen, die sowohl den SuchstringA als auch den SuchstringB...
  4. Textdatei filtern und löschen mit grep /sed

    Textdatei filtern und löschen mit grep /sed: Guten morgen liebe Forenmitglieder, da ich etliche Jahre in Sachen Linux pausiert habe und nun wegen beruflichem Wechsel wieder dort einsteige...
  5. Fragen zu stty, quotes und Datein (flush)

    Fragen zu stty, quotes und Datein (flush): Hi, ich schreibe seit ein paar Tagen ein Skript, dass über die Serielle Schnittstelle kommuniziert. Leider gibt es noch zwei Probleme, die ich...