Am 2018-07-14 21:20 schrieb Norbert Zawodsky:
Am 2018-07-14 19:59 schrieb Christian Brabandt:
On So, 01 Jul 2018, Norbert Zawodsky wrote:
Liebe bash-grep-sed-awk-???-Profis!
ich habe hier ein Problem zu lösen, bin aber nicht so gewandt in der Verwendung der Linux tools wie es dafür nötig wäre:
In einem Directory habe ich viele (ca. 4000) XML Dateien, die alle den gleich strukturierten Inhalt haben. Die Dateinamen sind nach dem Muster YYYYMMDDHHMMSSnnnnn.xml aufgebaut. Der Inhalt der Dateien ist ein xml formatierter stream, soweit ich es bereits untersucht habe OHNE CR/LF am Ende. Die Dateien sind unterschiedlich groß, die kleinste 3 KB, die (bis jetzt) Größte 215 KB
Der Aufbau ist immer der Selbe:
........................................<timestamp>YYYY-MM-DDTHH:MM:SS</timestamp>...........................<value>nnnnn</value>........................
wobei "." für alles steht, das mich NICHT interessiert. Mich interessiert ausschließlich der Timestamp und die numerische Value. Beide kommen pro Datei nur 1x vor (ziemlich gegen Ende).
Ich hätte nun gerne "etwas" (scipt, Kommando, mehrere Kommandos ...) durch das ich einen Teil der Dateien "durchschicken" kann (z.B. für die von heute "20180701*xml") und das mir dann folgenden output liefert:
YYYY-MM-DDTHH:MM:SS nnnnn\n YYYY-MM-DDTHH:MM:SS nnnnn\n YYYY-MM-DDTHH:MM:SS nnnnn\n YYYY-MM-DDTHH:MM:SS nnnnn\n
usw...
Oder anders ausgedrückt:
jede datei lesen, alles ignorieren bis der timestamp kommt, diesen ausgeben, weiterlesen bis die value kommt, diese ausgeben, Ein linefeed anhängen
Ich könnte mich jetzt hinsetzen und das ganze in C programmieren. Oder in C++ mit den Qt Klassen einen XML parser basteln. Aber ich denke mir, das muss doch einfacher mit den vorhandenen shell-tools gehen.. Nur, ich kriegs einfach nicht hin...
Ich weiß, hier gibt es eine Menge shell-programming-grep-awk-usw Gurus.. Hat wer von Euch einen Tip ? Für xml sollte man doch was spezielles nehmen und nicht mit regexp rumfuschen :)
xmlstarlet sel -I -t -v "//timestamp" -o " " -v "//value" *.xml
Best, Christian
Hallo Christian,
also, als "rumpfuschen" würde ich grep, sed & Co nicht bezeichnen.
Aber danke für den Hinweis auf xmlstarlet!! Kannte ich nicht, werde ich gleich mal unter die Lupe nehmen.
Grüße, Norbert
Cool tool !! Genial. Super. Danke für den Hinweis! Grüße, Norbert -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org