Selama 5 tahun, saya menggunakan stasiun cuaca La Crosse WS2350. Data yang disediakan oleh stasiun cuaca diproses dengan open2300 pada RPI. Ini bekerja dengan sangat baik. Namun, data suhu salah (sensor). Data suhu lebih rendah 1 ° C.
Karena saya tidak dapat mengkalibrasi sensor, saya ingin mengubah nilai suhu dari file yang diekstrak dari stasiun cuaca.
File teks ini (current.txt) berisi:
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
...
Saya ingin menambahkan +1 ke nilai "Ke", "Tomin", "Tomax" dan menimpa file teks dengan nilai yang benar.
Setelah melihat perintah sed dan awk, saya menyadari bahwa saya sudah ketinggalan zaman. Adakah yang bisa membimbing saya? Terima kasih
Edit:
Saya lupa file lain: ws2308.log Setiap 15 menit baris baru ditambahkan ke file 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
Nilai yang akan diubah adalah bidang ke-5 (yang pertama -1.2)
Juga perlu bahwa pada baris terakhir, nilai suhu bertambah 1 dan menimpa baris terakhir dengan nilai yang benar. Hanya baris terakhir yang akan diperhitungkan oleh program php yang memungkinkan untuk menampilkan hasil dalam grafik.
Terima kasih
sumber
-i
padaawk
menambahkan include file, tidak ada itu sepertised
's-i
pilihan.Pendekatan Perl:
Itu
-i
membuatnya menimpa file asli, sehingga tidak akan mencetak apa-apa, itu akan mengubah file secara langsung.The
-a
merekperl
bertindak sepertiawk
, membelah masukan pada whitesapce (atau apa pun yang diberikan oleh-F
) ke dalam array@F
. Jadi, bidang kedua akan$F[1]
karena array mulai menghitung pada 0. Karena itu skrip akan menggantikan bidang kedua dengan itu sendiri bertambah dengan satu pada baris dimulai denganTo
.sumber
Ini akan melakukan pekerjaan:
Lain cetak saja dan cetak item berikutnya
KELUARAN
sumber