stickybit
Goto Top

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.

$ 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

Content-Key: 1533534757

Url: https://administrator.de/contentid/1533534757

Printed on: April 19, 2024 at 05:04 o'clock

Member: stickybit
Solution stickybit Nov 20, 2021 at 15:37:46 (UTC)
Goto Top
Hab die Lösung gefunden:

cat file.xml | while read; do echo "$REPLY"; done  
Mitglied: 149569
Solution 149569 Nov 20, 2021 updated at 16:15:10 (UTC)
Goto Top
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>
Member: stickybit
stickybit Nov 20, 2021 at 16:30:20 (UTC)
Goto Top
Zitat von @149569:

Danke für die Antwort!

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.

Grundsätzlich klar, manchmal will man es aber einfach "quick and dirty" haben.
Es ist halt ein Teil vom Script mit festem Code, dass wieder verwendet werden soll.
Wenn es funktioniert, dann funktioniert es halt jedes Mal.
Mitglied: 149569
149569 Nov 20, 2021 at 16:46:41 (UTC)
Goto Top
Zitat von @stickybit:
Wenn es funktioniert, dann funktioniert es halt jedes Mal.
Da wünsche ich dir viel "Glück" face-wink.