SED Problem mit XML

Diskutiere SED Problem mit XML im Anwendungen Forum im Bereich Linux/Unix Allgemein; Hallo, bitte um Hilfe - komme mit GNU SED einfach nicht weiter ... muss aber gehen. Mein Problem: Möchte den XML-Tagnamen ändern, (nur das...

  1. #1 LUK, 23.07.2011
    Zuletzt bearbeitet: 23.07.2011
    LUK

    LUK Grünschnabel

    Dabei seit:
    23.07.2011
    Beiträge:
    2
    Zustimmungen:
    0
    Hallo,
    bitte um Hilfe - komme mit GNU SED einfach nicht weiter ... muss aber gehen.
    Mein Problem:
    Möchte den XML-Tagnamen ändern, (nur das Endtag), das Anfangstag ist OK,
    leider steht das Endtag nicht immer in der gleichen Zeile wie das Anfangstag
    und die Abschnitte (<occ>) wiederholen sich und beinhalten die gleichen Anfagstagnamen.
    Das ist mein Problem:

    XML-Abschnitt:
    <table>
    <occ>
    <ufield_ulabel>ACCEPT</dat>
    <ufield_base>BASE</dat>
    </occ>

    <occ>
    <ufield_ulabel>ACCEPT .........
    </dat>
    <ufield_base>BASE ....
    </dat>
    </occ>

    <occ>
    <ufield_ulabel>ACCEPT .........
    ..................
    ..... viele Zeilen .,..
    .....
    </dat>
    <ufield_base>BASE
    ......
    </dat>
    </occ>
    </table>

    Gewünschte Änderung </dat> => wie der Anfangstag:
    -----------------------------------------
    <table>
    <occ>
    <ufield_ulabel>ACCEPT</ufield_ulabel>
    <ufield_base>BASE</ufield_base>
    </occ>

    <occ>
    <ufield_ulabel>ACCEPT .........
    </ufield_ulabel>
    <ufield_base>BASE ....
    </ufield_base>
    </occ>

    <occ>
    <ufield_ulabel>ACCEPT .........
    ..................
    </ufield_ulabel>
    <ufield_base>BASE ....
    ..........
    </ufield_base>
    </occ>
    </table>

    Folgende SED- Anweisungen verwende ich momentan (die auch funktionieren),
    leider nur wenn ich 1x <occ> .. </occ> in der Datei (ufield.xml) habe.

    sed -n "1h;1!H;${;g;/<ufield_ulabel>.*<\/dat>/s/<\/dat>/<\/ufield_ulabel>/;p;}" ufield.xml 1> temp.xml

    sed -n "1h;1!H;${;g;/<ufield_base>.*<\/dat>/s/<\/dat>/<\/ufield_base>/;p;}" temp.xml 1> ufield.xml

    Info: das /g vor dem ";p" bring hier nicht das gewünschte Ergebnis.
    Den Bereich <occ> .. </occ> heraus zu schneiden und es daruaf anzuwenden,
    wäre möglich, aber auch umständlich.

    Bitte um Vorschläge, nur für SED - Danke!
     
  2. LUK

    LUK Grünschnabel

    Dabei seit:
    23.07.2011
    Beiträge:
    2
    Zustimmungen:
    0
    Hi,
    glaube die Lösung gefunden zu haben!

    sed -e "/<ufield_ulabel>.*/{:loop;N;/<\/dat>/!bloop;/<\/dat>/s/<\/dat>/<\/ufield_ulabel>/;}" ufield.xml 1> temp.xml
    sed -e "/<ufield_base>.*/{:loop;N;/<\/dat>/!bloop;/<\/dat>/s/<\/dat>/<\/ufield_base>/;}" temp.xml 1> ufield.xml

    Gruß!
     
Thema:

SED Problem mit XML

Die Seite wird geladen...

SED Problem mit XML - Ähnliche Themen

  1. Probleme mit WinSCP und Rechten

    Probleme mit WinSCP und Rechten: Hallo. Ich habe vor ein paar Tgen meinen ersten Ubuntu 16.04 vServer bei 1&1 bestellt, gemäß dem sicheren Umgang damit, habe ich erstmal den SSH...
  2. Bootproblem

    Bootproblem: Hallo Ein PC (i686 mit Debian unstable, nox) hat Bootprobleme (will heißen ist erfolgt keine Grafikausgabe. was ich bisher gemacht habe: HDD an...
  3. Crontab und Scripts - Problem

    Crontab und Scripts - Problem: Hallo Zusammen Ich habe ein Script welches mittels Cronjob ausgeführt werden soll. Gemäss Log wird es auch ausgeführt, jedoch passiert nichts:...
  4. Problem bei der installation einer Sun Netzwerkkarte

    Problem bei der installation einer Sun Netzwerkkarte: Guten Morgen zusammen, beim installieren einer zusätzlichen Netzwerkkarte habe ich ein Problem. Die Karte wird nicht automatisch installiert. Es...
  5. Problem bei der Vergabe von Sciherheitsinformationen auf eine Freiagbe

    Problem bei der Vergabe von Sciherheitsinformationen auf eine Freiagbe: Liebe Community, zurzeit arbeite ich an eine Active Directory Domäne die mittels Samba läuft. Dazu habe ich einen AD DC auf Debian 8.7 mit Samba...