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

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #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....
     
  4. #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
     
  5. #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?
     
  6. #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. 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...
  2. NFS durch Symlink auf lokales Dateisystem entlasten

    NFS durch Symlink auf lokales Dateisystem entlasten: Hallo zusammen, ich bin neu hier und auch nicht sicher ob ich mich hier im richtigen Forum befinde... Darum schon mal sorry wenn es eigentlich...
  3. Linux "vergisst" Dateisystem?

    Linux "vergisst" Dateisystem?: Hallo zusammen! Aufgrund des von mir hier beschriebenen Problems habe ich nun die halbe Nacht "durchgearbeitet", da ein komplett neues Konzept...
  4. 2 Spalten in EINER Textdatei GETRENNT addieren

    2 Spalten in EINER Textdatei GETRENNT addieren: Hey, bin ein ziemlicher Neuling in Sachen programmieren. Nun steh ich vor dem Problem, dass ich 2 Zahlenspalten inner Textdatei (vim) getrennt...
  5. User sollen Dateien speichern und ändern, aber nicht neu anlegen dürfen

    User sollen Dateien speichern und ändern, aber nicht neu anlegen dürfen: Hallo liebe Helfer, welche Einstellungen muss ich in der smb.conf bzw. unter Linux vornehmen, damit User vorhandene Dateien öffnen und speichern...