Hallo liebe Forumsleute
ich bin noch relativ unerfahren mit der Shell und bin aber fleissig am Experimentieren und Lösungen für meine Probleme zu finden. Nun stehe ich aber bei einem Problem an, bei dem ihr mir hoffentlich weiterhelfen könnt.
Aufgabe: Ich muss in rund 1000 xml-Dateien jeweils zwei Zeilen verschieben. Alle Dateien sind gleich strukturiert, von daher sollte es also keine Probleme geben. Und zwar geht es darum, dass ich die Zeile 20 auf die Zeile 8 kriege. Die Originaldatei sieht folgendermassen aus:
Originaldatei:
1 2 3 4 5 6 7 8 9 10 11 | ?xml version="1.0" encoding="UTF-8"?> <document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="vorlage.dtd"> <meta> <id>200455</id> <author></author> <url></url> <date></date> [...] <text> <date>1941-06-01</date> |
Ich hab dazu ein sed-Script mit Hilfe vieler Forenbeiträge gebastelt, aber irgendwie funktioniert es nicht:
1 | for file in *.xml; do sed -i -f -e '20{h;d}' -e '8g' $file; done |
Wenn ich es laufen lasse, dann krieg ich folgende Fehlermeldung:
1 2 | sed: 1: "20{h;d} ": extra characters at the end of d command |
Kann mir jemand weiterhelfen? Ich hab schon einiges ergoogelt, steh aber voll auf dem Schlauch :s. Danke schon zum Voraus! LG Tsueri