Zeile aus XML File auslesen, Zahl parsen ...

McGizmo

Enthusiast
Thread Starter
Mitglied seit
05.02.2004
Beiträge
5.735
Ort
Großherzogtum Baden
Schönen guten Abend, werte Linux User.

Für unsere Linux Vorlesung mache ich mir ein paar Gedanken zu einem Programm das wir im Shellskript schreibe sollen. Und irgendwie... kann ich mich damit einfach nicht so ganz anfreunden. Ich hab's jetzt einfach mal in Java geschrieben und versuche das in's Shellskript umzusetzen. Das Prinzip ist reicht einfach, es geht um Folgendes.

Wir sollen ein Programm schreiben, dass Wetterdaten (bzw. Temperatur) aus dem Internet zieht und grafisch stündlich aktualisiert darstellt. Mir geht es jetzt um die zugrundeliegende "Temperatur extrahieren" Logik.

Ich mache das (in Java) wie folgt - Ich ziehe mir den für die Stadt passenden RSS Stream von wunderground.com (mit etwas Code der im Endeffekt Wget nachmacht). Die gesaugten XMLs sind immer gleich formatiert, also extrahiere ich in einer Folge von Stringoperationen die entsprechende Zeile und lasse mir daraus die Zahl (also z.B. 17.3) parsen. So ganz grob gesagt.

Jetzt der Port auf Linux ... das XML mit WGet ziehen ist kein Ding, das bekomme ich gerade noch hin. Was sind jetzt aber passende Linux Kommandos, um mir die Zahl zu extrahieren?

Der Teil der Temperatur sieht jetzt z.B. so aus:

& # 1 7 6 ; C (natürlich ohne Leerzeichen, musste die aber Einbauen damit das hier nicht als °C geparst wird)

Ich will aus einem File eine Zeile suchen (bzw. eine Zeile [ich weiß die wievielte Zeile es ist] extrahieren). Diese Zeile durchsuche ich nach einer Zeichenkette, und zwar "°C". Nun sollen alle Zahlen zwischen führendem Leerzeichen und & (hier im Bsp. also 18, muss aber auch für 16.3 oder -11.2 funktionieren) extrahiert und in eine Variable gespeichert werden.

Das Problem ist ... Java Befehle kenne ich. Befehle für die Linux Shell eher weniger ...

Kann mir da wer ein paar Fingerzeige geben? Grundsätzliche Befehle reichen, einlesen kann ich mich dann (hoffentlich) selber ...
 
Zuletzt bearbeitet:
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
Dank' euch. Auch dir nate, das wird ausgedruckt, klasse Sache.

Ich hab den Extraktionspart soweit jetzt recht gut hinbekommen. Ist zwar stellenweise etwas "dirty" aber mit grep und sed ging's recht gut.
 
waere es nicht cleverer das irgendwie ueber einen shell xpath interpreter zu loesen?
 
xpath ist eine xml abfragesprache.
eigentlich ist es doch der sinn von xml dass man da leicht drauf zugreifen kann und eben reinkommende daten nichtmehr umstaendlichen mit regex zerlegen muss.
 
Hm, die RSS Feeds zu benutzen war ja keine Vorgabe ...

aber das klingt nicht schlecht, werde ich mir mal ansehen. Besten Dank für den Tipp Kasn
 
Schließ mich da Kasn an. XML ist ja kein INI-Format, dass man Zeilenweise parst, sondern ein Format, auf das man über die empfohlenen Standards zugreift. XPath, DOM, SAX sind dort die gängigsten Methoden.
Weis nur leider nicht, ob die ganzen Interfaces auch für die Shell ohne besondere Packete vorhanden sind.
 
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh