Seit 5 Jahren benutze ich eine Wetterstation La Crosse WS2350. Die von der Wetterstation bereitgestellten Daten werden mit open2300 auf RPI verarbeitet. Das funktioniert sehr gut. Die Temperaturdaten sind jedoch falsch (Sensor). Die Temperaturdaten sind 1 ° C niedriger.
Da ich den Sensor nicht kalibrieren kann, möchte ich den Temperaturwert aus der von der Wetterstation extrahierten Datei ändern.
Diese Textdatei (current.txt) enthält:
Date 2016-Dec-03
Time 10:30:29
Ti 11.9
Timin 11.6
Timax 27.7
TTin 10:34
DTimin 2016-01-19
TTimax 00:44
DTimax 2016-08-28
To -2.4
Tomin -4.8
Tomax 37.4
TTomin 06:46
DTomin 2016-02-18
TTomax 16:13
DTomax 2016-07-19
...
Ich möchte +1 zu den Werten "To", "Tomin", "Tomax" hinzufügen und die Textdatei mit den richtigen Werten überschreiben.
Nachdem ich mir die Befehle sed und awk angesehen habe, stelle ich fest, dass ich veraltet bin. Kann mich jemand führen? Vielen Dank
Bearbeiten:
Ich habe eine andere Datei vergessen: ws2308.log Alle 15 Minuten wird der Datei ws2308.log eine neue Zeile hinzugefügt:
...
20161203150600 2016-Dec-03 15:06:00 11.8 -1.1 -3.2 65 87 0.0 157.5 SSE -1.1 569.80 1015.700
20161203152100 2016-Dec-03 15:21:00 12.3 -1.1 -3.2 64 87 0.0 157.5 SSE -1.1 569.80 1015.600
20161203153600 2016-Dec-03 15:36:00 12.2 -1.2 -3.3 64 87 0.0 135.0 SE -1.2 569.80 1015.700
Der zu ändernde Wert ist das 5. Feld (das erste -1,2).
Es ist auch erforderlich, dass in der letzten Zeile der Wert der Temperatur um 1 erhöht wird und die letzte Zeile mit dem richtigen Wert überschrieben wird. Nur die letzte Zeile wird vom Programm PHP berücksichtigt, wodurch die Ergebnisse in einem Diagramm angezeigt werden können.
Vielen Dank
quelle
-i
aufawk
eine Include - Datei hinzufügt, es ist nichts , wiesed
‚s --i
Option.Ein Perl-Ansatz:
Das
-i
macht es die ursprüngliche Datei überschreiben, so dass er nichts auszudrucken, wird es die Datei direkt ändern.Die
-a
Marken verhalten sichperl
soawk
, als würden sie ihre Eingabe auf Whitesapce (oder irgendetwas anderem von-F
) in das Array aufteilen@F
. Das zweite Feld ist also,$F[1]
weil Arrays bei 0 zu zählen beginnen. Das Skript ersetzt daher das zweite Feld durch sich selbst, das in Zeilen, die mit beginnen, um eins erhöht wirdTo
.quelle
Dies wird die Arbeit erledigen:
Andernfalls drucken Sie es einfach aus und drucken Sie den nächsten Artikel
AUSGABE
quelle