Shell: Datei mit Einrückungen zeilenweise einlesen
Hallo an Experten,
ich habe da eine XML-Datei, also formatiert mit Einrückungen usw.
Diese laufe ich durch, um an einer bestimmte Stelle ein Paar zus. Zeilen einzufügen.
Nur ist es so, dass dabei die Einrückungen verloren gehen.
Wie kann ich denn die Einrückungen beibehalten?
VG
Andre
ich habe da eine XML-Datei, also formatiert mit Einrückungen usw.
Diese laufe ich durch, um an einer bestimmte Stelle ein Paar zus. Zeilen einzufügen.
$ while read line; do echo $line; done < file.xml
Nur ist es so, dass dabei die Einrückungen verloren gehen.
Wie kann ich denn die Einrückungen beibehalten?
VG
Andre
Please also mark the comments that contributed to the solution of the article
Content-Key: 1533534757
Url: https://administrator.de/contentid/1533534757
Printed on: April 19, 2024 at 05:04 o'clock
4 Comments
Latest comment
Diese laufe ich durch, um an einer bestimmte Stelle ein Paar zus. Zeilen einzufügen.
XML sollte man besser immer mit Parsern bearbeiten, so stellt man auch sicher das man das DOC nicht ungültig macht.Hier ein Beispiel mittels Bash und php7:
Ausgangs-XML Datei
<?xml version="1.0" encoding="utf-8"?>
<root>
<items>
<item name="Max">
<Alter>22</Alter>
<PLZ>88888</PLZ>
</item>
</items>
</root>
Bash Skript
#!/bin/bash
php7 -r '
$xml = DOMDocument::load("./test.xml");
$xml->formatOutput = true;
$node = (new DOMXpath($xml))->query("/root/items/item");
$newnode = $node->cloneNode(true);
$newnode->setAttribute("name","sepp");
$newnode->getElementsByTagName("Alter")->nodeValue = "55";
$newnode->getElementsByTagName("PLZ")->nodeValue = "22222";
(new DOMXpath($xml))->query("/root/items")->appendChild($newnode);
print_r($xml->saveXML());
'
Ausgabe:
<?xml version="1.0" encoding="utf-8"?>
<root>
<items>
<item name="Max">
<Alter>22</Alter>
<PLZ>88888</PLZ>
</item>
<item name="sepp">
<Alter>55</Alter>
<PLZ>22222</PLZ>
</item>
</items>
</root>
Da wünsche ich dir viel "Glück" .