Durante 5 anos, uso uma estação meteorológica La Crosse WS2350. Os dados fornecidos pela estação meteorológica são processados com o open2300 no RPI. Isso funciona muito bem. No entanto, os dados de temperatura são falsos (sensor). Os dados de temperatura são 1 ° C mais baixos.
Como não consigo calibrar o sensor, quero alterar o valor da temperatura do arquivo extraído da estação meteorológica.
Este arquivo de texto (current.txt) contém:
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
...
Quero adicionar +1 aos valores "Para", "Tomin", "Tomax" e substituir o arquivo de texto pelos valores corretos.
Depois de olhar para os comandos sed e awk, percebo que estou desatualizado. Alguém pode me guiar? obrigado
Editar:
Esqueci outro arquivo: ws2308.log A cada 15 minutos, uma nova linha é adicionada ao arquivo 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
O valor a ser modificado é o 5º campo (o primeiro -1,2)
Também é necessário que, na última linha, o valor da temperatura seja incrementado em 1 e substitua a última linha pelo valor correto. Somente a última linha será levada em consideração pelo programa php, que permite exibir os resultados em um gráfico.
obrigado
fonte
-i
onawk
adiciona um arquivo de inclusão, não é nada parecido comsed
a-i
opção.Uma abordagem Perl:
O
-i
torna substituir o arquivo original, por isso vai imprimir nada, ele vai mudar o arquivo diretamente.O
-a
makesperl
age comoawk
, dividindo sua entrada em whitesapce (ou qualquer outra coisa dada por-F
) na matriz@F
. Portanto, o segundo campo será$F[1]
porque as matrizes começam a contar em 0. Portanto, o script substituirá o segundo campo incrementado por um nas linhas que começam comTo
.fonte
Isso fará o trabalho:
Caso contrário, basta imprimi-lo e imprimir o próximo item
RESULTADO
fonte