Hallo Norbert, for d in 20180701*xml ; do ts=$(grep -Po '<timestamp>.*</timestamp>' $d | sed -E -e 's/<.?timestamp>// g') value=$(grep -Po '<value>.*</value>' $d | sed -E -e 's/<.?value>//g') echo "$ts $value" done gruß Harald Am Sonntag, 1. Juli 2018, 01:35:24 CEST schrieb Norbert Zawodsky:
Liebe bash-grep-sed-awk-???-Profis!
Der Aufbau ist immer der Selbe:
........................................<timestamp>YYYY-MM-DDTHH:MM:SS...........................<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 ?
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