j'ai fichier avec des valeurs de température:modèle Sed pour exclure les valeurs
$ cat temperature.txt
[1450746005000,18.00],[1450746365000,18.00],[1450746725000,17.94],[1450747085000,17.94],[1450747445000,17.94],[1450747805000,17.94],[1450748165000,17.94],[1450748525000,17.88],[1450748885000,17.88],[1450749245000,17.88],[1450749606000,17.88],
Parfois, ma station enregistre de mauvaises valeurs telles que: (une deuxième valeur)
[1453634645000,19.06],[1453635364000,[1453658405000,19.13],
Je voudrais supprimer uniquement une valeur incorrecte et écraser ce fichier. Dans ce cas son [1453635364000,
J'ai trouvé comment rechercher de "bonnes" valeurs. Mais je n'ai aucune idée de comment enlever les mauvaises.
sed 's/\[[^]]*,?\],*//g' temperature.txt > temperature.txt.proper
rm temperature.txt && mv temperature.txt.proper temperature.txt
Quelle inventivité est la mauvaise mise en forme? Juste un horodatage sans la température et le crochet fermé, ou l'appareil peut-il devenir plus inventif? Il est probable que votre meilleur pari est de trouver seulement les bonnes valeurs, et pour cela j'utiliserais probablement Perl, mais Python pourrait aussi faire le travail. Par exemple, 'perl -lne 'while (m/(\ [\ d +, \ d + \. \ D +])/g) {print $ 1}' data' imprime les lectures valides une par ligne; et 'perl -ne 'while (m/(\ [\ d +, \ d + \. \ d +])/g) {print" $ 1 "}} END {print" \ n "' data' les affiche tous sur un ligne (en supposant que le fichier de données s'appelle 'data'). –