PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [Shell] Bereich zwischen zwei Tags aus Datei auslesen



gabbbagandalf
01-02-2005, 19:47
Hallo,

ich wie kann man XML Dateien nach bestimmten Datensätzen ausfiltern?

Ich hab da z.B. :

<programm starttime="(DATUM im Format JJJJMMTT)">
<title>blabla</title>
<desc>text</desc>
</programm>

davon mehrere hunderte. Ich will jetzt alle ausgeben die z.b. das Datum 20050101 haben. Mit
cat inputfile | grep "20050101" -A 4
würde er mir ja jeweils die Zeile ausgeben, in der der Text gefunden wurde und die folgenden 4 Zeilen. Das Problem ist nur, das desc teilweise Mehrzeilig ist. Deshalb bräuchte ich etwas, mit dem man von <tag > bis </tag> lesen kann. Wie stell ich das am einfachsten mit Bash an?

Hans-Georg Normann
01-02-2005, 21:10
hmm,

da fällt mir auf Anhieb nur Python ein. Ich meine da gäb's einen XML Parser. Notfalls mal auf www.python-forum.de nachsehen.

Kann natürlich sein, das andere Tools wie Perl oder PHP das auch können, aber das weiss ich nicht.

Hans

peschmae
02-02-2005, 12:13
Mit Sed kann man (mit hängen und würgen und jeder Menge abartiger Techniken) sowas hinkriegen. Irgendwo im Forum hab ich sowas schon mal beschrieben glaub ich.

http://www.mrunix.de/forums/showthread.php?t=35852&highlight=sed+script

MfG Peschmä

gabbbagandalf
02-02-2005, 15:52
Danke, das hat mich schon mal einen großen Schritt weitergebracht, wenn noch was ist, meld ich mich noch einmal.