Уже 5 лет пользуюсь метеостанцией La Crosse WS2350. Данные, предоставленные метеостанцией, обрабатываются с open2300 по RPI. Это работает очень хорошо. Тем не менее, данные о температуре ложные (датчик). Данные о температуре на 1 ° C ниже.
Поскольку я не могу откалибровать датчик, я хочу изменить значение температуры из файла, извлеченного из метеостанции.
Этот текстовый файл (current.txt) содержит:
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
...
Я хочу добавить +1 к значениям «To», «Tomin», «Tomax» и перезаписать текстовый файл правильными значениями.
Посмотрев команды sed и awk, я понял, что устарел. Кто-нибудь может направить меня? Спасибо
Редактировать :
Я забыл другой файл: ws2308.log Каждые 15 минут в файл добавляется новая строка ws2308.log:
...
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
Значение, которое нужно изменить - это 5-е поле (первое -1.2)
Также необходимо, чтобы в последней строке значение температуры увеличивалось на 1 и перезаписывало последнюю строку правильным значением. Только последняя строка будет учтена программой php, которая позволяет отображать результаты в виде графика.
Спасибо
источник
-i
наawk
добавляет инклюдник, это ничего , какsed
«S-i
вариант.Подход Perl:
Он
-i
заставляет его перезаписать исходный файл, поэтому он ничего не распечатает, он изменит файл напрямую.Операторы
-a
делаютperl
такawk
, будто их входные данные делятся на whitesapce (или что-либо еще, что дано-F
) в массиве@F
. Итак, второе поле будет,$F[1]
потому что массивы начнут отсчитываться с 0. Поэтому сценарий заменит второе поле на себя, увеличенное на единицу в строках, начинающихся сTo
.источник
Это сделает работу:
Иначе просто распечатай и распечатай следующий предмет
ВЫВОД
источник