Durante 5 años, uso una estación meteorológica La Crosse WS2350. Los datos proporcionados por la estación meteorológica se procesan con open2300 en RPI. Esto funciona muy bien Sin embargo, los datos de temperatura son falsos (sensor). Los datos de temperatura son 1 ° C más bajos.
Como no puedo calibrar el sensor, quiero cambiar el valor de temperatura del archivo extraído de la estación meteorológica.
Este archivo de texto (current.txt) contiene:
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
...
Quiero agregar +1 a los valores "Para", "Tomin", "Tomax" y sobrescribir el archivo de texto con los valores correctos.
Después de mirar los comandos sed y awk, me doy cuenta de que estoy desactualizado. ¿Alguien puede guiarme? Gracias
Editar:
Olvidé otro archivo: ws2308.log Cada 15 minutos se agrega una nueva línea al archivo 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
El valor a modificar es el quinto campo (el primer -1.2)
También es necesario que en la última línea, el valor de la temperatura se incremente en 1 y sobrescriba la última línea con el valor correcto. Solo la última línea será tomada en cuenta por el programa php que permite visualizar los resultados en un gráfico.
Gracias
fuente
-i
onawk
agrega un archivo de inclusión, no se parece en nada ased
la-i
opción.Un enfoque de Perl:
Esto
-i
hace que sobrescriba el archivo original, por lo que no imprimirá nada, cambiará el archivo directamente.El
-a
haceperl
actuar comoawk
, dividiendo su entrada en whitesapce (o cualquier otra cosa dada por-F
) en la matriz@F
. Por lo tanto, el segundo campo se debe a$F[1]
que las matrices comienzan a contar en 0. Por lo tanto, el script reemplazará el segundo campo por sí mismo incrementado en uno en las líneas que comienzan conTo
.fuente
Esto hará el trabajo:
De lo contrario, simplemente imprímalo e imprima el siguiente elemento
SALIDA
fuente