Ich plane, ein einzelnes Datenfeld aus der letzten Datenzeile einer Website zu extrahieren, um eine RRD-Datenbank zu füllen. Ich verwende Linux.
Die Website ist:http://www.ogimet.com/cgi-bin/getsynop?begin=201309250000&block=03895(es sind Wetterdaten des Flughafens).
Fragen: Kann ich verwenden, tail
umdirektdie letzte Datenzeile von der Website lesen, oder muss ich die Daten mit einem anderen Dienstprogramm lesen und dann verwenden, tail
um die letzte Zeile abzurufen? Ist awk
das beste Dienstprogramm zum Heraustrennen des n-ten Datenfelds aus dieser Zeile? (Ich kenne mich mit Perl nicht aus).
Danke, Nigel.
Antwort1
Sie möchten curl
die stderr-Ausgabe von deaktivieren, die Netzwerkdaten anzeigt, und dann einfach eine Weiterleitung an tail
:
$ url="http://www.ogimet.com/cgi-bin/getsynop?begin=201309250000&block=03895"
$ curl "$url" 2>/dev/null | tail -n 1
03895,2013,11,28,15,00,AAXX 28154 03895 41450 82702 10090 20076 40342 56014 70252 885// 333 86613=
Sie können das weglassen, 2>/dev/null
wenn Sie möchten – es spielt für keine Rolle tail
, ist aber schöner anzusehen.
Antwort2
Nein, tail liest nicht aus dem Netzwerk, wget, curl oder snarf jedoch schon. Jedes dieser Programme kann die Remote-Datei herunterladen und speichern oder herunterladen und auf Standardausgabe drucken. Dann kommen tail und awk ins Spiel (was, wenn Sie wissen, dass es gut funktioniert).