Depuis 5 ans, j'utilise une station météo La Crosse WS2350. Les données fournies par la station météo sont traitées avec open2300 sur RPI. Cela fonctionne très bien. Cependant, les données de température sont fausses (capteur). Les données de température sont inférieures de 1 ° C.
Comme je ne peux pas calibrer le capteur, je souhaite modifier la valeur de température du fichier extrait de la station météo.
Ce fichier texte (current.txt) contient:
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
...
Je veux ajouter +1 aux valeurs "À", "Tomin", "Tomax" et écraser le fichier texte avec les valeurs correctes.
Après avoir regardé les commandes sed et awk, je me rends compte que je suis dépassé. Quelqu'un peut-il me guider? Merci
Éditer :
J'ai oublié un autre fichier: ws2308.log Toutes les 15 minutes, une nouvelle ligne est ajoutée au fichier 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
La valeur à modifier est le 5ème champ (le premier -1,2)
Il est également nécessaire que sur la dernière ligne, la valeur de la température soit incrémentée de 1 et écrase la dernière ligne avec la valeur correcte. Seule la dernière ligne sera prise en compte par le programme php qui permet d'afficher les résultats dans un graphique.
Merci
la source
-i
surawk
ajoute un fichier inclus, il n'y a rien commesed
de »-i
l'option.Une approche Perl:
Le
-i
fait écraser le fichier d'origine, il n'imprimera donc rien, il changera directement le fichier.Les
-a
marquesperl
agissent commeawk
, divisant son entrée sur l'espace blanc (ou tout autre élément donné par-F
) dans le tableau@F
. Ainsi, le deuxième champ sera$F[1]
parce que les tableaux commencent à compter à 0. Le script remplacera donc le deuxième champ par lui-même incrémenté de un sur les lignes commençant parTo
.la source
Cela fera le travail:
Sinon il suffit de l'imprimer et d'imprimer l'élément suivant
PRODUCTION
la source