Od 5 lat używam stacji pogodowej La Crosse WS2350. Dane dostarczone przez stację pogodową są przetwarzane za pomocą open2300 na RPI. To działa bardzo dobrze. Jednak dane temperatury są fałszywe (czujnik). Dane temperatury są o 1 ° C niższe.
Ponieważ nie mogę skalibrować czujnika, chcę zmienić wartość temperatury z pliku pobranego ze stacji pogodowej.
Ten plik tekstowy (current.txt) zawiera:
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
...
Chcę dodać +1 do wartości „Do”, „Tomin”, „Tomax” i zastąpić plik tekstowy prawidłowymi wartościami.
Po przejrzeniu poleceń sed i awk zdaję sobie sprawę, że jestem przestarzały. Czy ktoś może mnie poprowadzić? Dzięki
Edytować :
Zapomniałem innego pliku: ws2308.log Co 15 minut do pliku ws2308.log dodawany jest nowy wiersz:
...
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
Wartość do modyfikacji to piąte pole (pierwsze -1,2)
Konieczne jest również, aby w ostatnim wierszu wartość temperatury była zwiększana o 1 i zastępowała ostatnią linię prawidłową wartością. Program php bierze pod uwagę tylko ostatni wiersz, który pozwala wyświetlić wyniki na wykresie.
Dzięki
źródło
-i
naawk
Dodaje to plik, to nic takiegosed
„s-i
opcja.Podejście Perla:
-i
Czyni go zastąpić oryginalny plik, więc będzie wydrukować nic, będzie to zmienić plik bezpośrednio.W
-a
markiperl
działają jakawk
, podział jego wejście na whitesapce (lub coś jeszcze wydane przez-F
) w tablicy@F
. Tak więc drugie pole będzie miało miejsce,$F[1]
ponieważ tablice zaczynają odliczać od 0. Skrypt zastąpi zatem drugie pole, zwiększając je o jeden w wierszach zaczynających się odTo
.źródło
To wykona pracę:
W przeciwnym razie po prostu go wydrukuj i wydrukuj następny element
WYNIK
źródło