ubuntuusers.de

Die log Zeile Spaltenweise in einzelne Variablen schreiben.

Status: Ungelöst | Ubuntu-Version: Kein Ubuntu
Antworten |

Kilowatt

(Themenstarter)

Anmeldungsdatum:
4. Dezember 2017

Beiträge: 63

Wohnort: Salzgitter

Hallo @seahawk1986, danke für die fertige HTML Datei, funktionierte auf Anhieb. Die Daten Charts mit dem gnuplot habe ich ebenfalls schon gezeichnet.

@ alle

Da ich ohne Datenbank auskommen möchte, die paar statistische Operationen wie Tages durchschnitt, Monatsverbrauch, Differenz zwischen zwei Werten usw. schafft man auch mit Shell. Was mir noch nicht ganz klar ist, wie lese ich ein Wert im bestimmten Datum/Zeitbereich aus?

Ich möchte z.B. wissen wie viel Elektrische Energie in 24 Std., 7 Tagen, einem Monat und einem Jahr verbraucht wurde. Dafür muss ich irgendwie die Werte nach Datum und Uhrzeit suchen können. Z.B. "$El_Verbr" zwischen 01.10.2017 00:00:00 und 30.10.2017 23:59:59 wie stelle ich das an ?

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11301

Wohnort: München

Du kannst z.B. das Datum mit date parsen und mit den Zielwerten als Unix-Timestamp vergleichen.

Oder du filterst die Logdaten einfach mit grep - für so einfache Kriterien wie alle Tage eines Monats ist das ja schnell erledigt:

1
2
3
monat=10
jahr=2017
grep "^[0-3][0-9]\.${monat}\.${jahr}" /home/pi/rec.log

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Wohnort: Wolfen (S-A)

Kilowatt schrieb:

Hallo @seahawk1986, danke für die fertige HTML Datei, funktionierte auf Anhieb. Die Daten Charts mit dem gnuplot habe ich ebenfalls schon gezeichnet.

Ah, ok - die Darstellung mit HTML zu machen ist auch eine interessante Variante !
Kannst Du dazu etwas mehr verraten, wie Du das machst ? - vor allem, wie Du die Live-Werte in die (statische) HTML-Seite kriegst ?

Da ich ohne Datenbank auskommen möchte, die paar statistische Operationen wie Tages durchschnitt, Monatsverbrauch, Differenz zwischen zwei Werten usw. schafft man auch mit Shell. Was mir noch nicht ganz klar ist, wie lese ich ein Wert im bestimmten Datum/Zeitbereich aus?

Nee, eine Datenbank ist für sowas nicht nötig. Ich würde die Log-Datei einfach nur durchkämmen, und die jeweilige Spalte in einer assoziativen Array-Variablen aufaddieren. (Und für den Durchschnitt dazu auch die Anzahl der addierten Zahlen dazu)
Also sowas in der Art:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
#!/usr/bin/awk -f

    {
    summe[istwert_vorlauf]+=$4;
    anzahl[istwert_vorlauf]++;
    # ....
    }

END {
    print "Mittelwert Vorlauf: " summe[istwert_vorlauf]/anzahl[istwert_vorlauf];
    # ....
    }

Ich möchte z.B. wissen wie viel Elektrische Energie in 24 Std., 7 Tagen, einem Monat und einem Jahr verbraucht wurde. Dafür muss ich irgendwie die Werte nach Datum und Uhrzeit suchen können. Z.B. "$El_Verbr" zwischen 01.10.2017 00:00:00 und 30.10.2017 23:59:59 wie stelle ich das an ?

Den Zeitrahmen musst Du natürlich vorher abstecken, aber dann ist es nicht so schwer. (auch awk hat Time Functions, mit denen Du das auswerten kannst !) Je nachdem, was für eine Art Wert das ist, müsstest Du die Einzelverbräuche einfach nur aufaddieren, bei Leistungen aufaddieren und durch die Anzahl Summanden teilen (→ Mittelwert), oder bei so etwas wie Zählerständen einfach nur die Differenz zwischen dem ersten und dem letzten Wert nehmen. Und wenn Du ganz genau sein willst, kannst Du ja für die Fehler vom perfekten Anfangs- und Endzeitpunkt noch einen Korrekturfaktor einbauen ...

Das mal so als Ansatz.

LG,

track

Kilowatt

(Themenstarter)

Anmeldungsdatum:
4. Dezember 2017

Beiträge: 63

Wohnort: Salzgitter

Hallo Allerseits,

um die Java Bibliotheken nutzen zu können, muss ich den Logformat umwandeln. Die Kommas "," müssen durch Punkte "." ersetzt werden und die Leerstellen durch Kommas. Das Datum soll ebenfalls auf die USA Standard gedreht werden und das alles bevor in die Logdatei geschrieben wird.

was haltet Ihr davon, wenn man es irgendwie hier unterbringen könnte?

1
2
3
4
5
6
#!/bin/sh
stty -F /dev/ttyUSB0 19200
sed -u '/Typ/,/Messzeit/d' /dev/ttyUSB0 | while read line; do
      [ -z "${line}" ] && continue
      echo "$(date '+%d.%m.%Y') $line"
done >> /home/pi/rec.log
1
2
3
4
5
#!/bin/sh
stty -F /dev/ttyUSB0 19200  
sed -u '/Typ/,/Messzeit/d;/^[ \t]*$/d' /dev/ttyUSB0 | while read line; do
  echo "$(date '+%Y/%m/%d') $line"
done >> /home/pi/record.log

Habe im Forum paar Beispiele gefunden, nur wie bringe ich es alles zusammen ? Das Datum zu drehen währe kein Problem, die Punkte, und Kommas statt Leerzeichen in einem Shell String zu unterbringen, das ist für mich ein Problem. Man kann natürlich schon eine fertige Logdatei umwandeln, dann habe ich zwei Logdateien mit unterschiedlichen Format.

1
sed s/\\,/./g /dev/ttyUSB0

So sollen die Zeilen aussehen;

2017/12/06 22:51:59,030.0,033.9,028.7,017.5,003.8,003.2,053.2,033.0,007.2,000,050,099,035,111,079315319,000943235,3.8,(dieser Wert 00210, wenn es geht, muss durch 10 geteilt werden),06650  

So sehen die Zeilen momentan in der Logdatei aus:

06.12.2017 22:51:59 030,0 033,9 028,7 017,5 003,8 003,2 053,2 033,0 007,2 000 050 099 035 111 079315319 000943235  3,8 00210 06650
06.12.2017 22:52:09 030,0 033,9 028,7 017,5 003,7 003,1 053,3 033,0 007,2 050 050 099 035 111 079315334 000943240  3,9 00210 06900
06.12.2017 22:52:19 030,0 033,9 028,7 017,5 003,7 003,1 053,2 033,0 007,2 050 050 099 035 111 079315354 000943245  3,9 00210 06650
06.12.2017 22:52:29 030,0 033,9 028,7 017,5 003,7 003,1 053,2 033,0 007,2 050 050 099 035 111 079315369 000943250  3,9 00212 06900

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Wohnort: Wolfen (S-A)

Für solche Umformatierungen (+ ein bisschen Rechnen) würde ich Dir awk anbieten:

track@track:~$ echo '06.12.2017 22:51:59 030,0 033,9 028,7 017,5 003,8 003,2 053,2 033,0 007,2 000 050 099 035 111 079315319 000943235  3,8 00210 06650'  |  \
> awk -v OFS=, '{split($1,d,"."); gsub(",","."); $1=d[3] "/" d[2] "/" d[1]; $20/=10; sub(","," "); print}'
2017/12/06 22:51:59,030.0,033.9,028.7,017.5,003.8,003.2,053.2,033.0,007.2,000,050,099,035,111,079315319,000943235,3.8,21,06650 

Du siehst, auch das Feld 20 ist hier umgerechnet, aber noch nicht neu formatiert.

LG,

track

Kilowatt

(Themenstarter)

Anmeldungsdatum:
4. Dezember 2017

Beiträge: 63

Wohnort: Salzgitter

Vielen Dank track,

Umrechnen ist zweitrangig, gibt es eine Möglichkeit diesen Skript in schon vorhandene Serielle Schnittstellen Abfrage zu implementieren? Wir benutzen da schon sed bei löschen fehlerhaften Zeilen, ist da nicht gleich die Umwandlung möglich ?

Habe vergessen zu erwähnen, zwischen Datum und Uhrzeit wird Bindestrich von dem Programm akzeptiert. Also da muss man wohl nichts machen da kein Leerzeichen und keine Komma. Das geht ganz einfach direkt da wo Datum der Zeile hinzugefügt wird.

2017/12/06-22:51:59,030.0,033.9,028.7,017.5,003.8,003.2,053.2,033.0,007.2,000,050,099,035,111,079315319,000943235,3.8,00210,6650

Also wenn ich Dich richtig verstanden habe, dann könnte ich so machen:

1
2
3
4
5
6
#!/bin/sh
stty -F /dev/ttyUSB0 19200  
sed -u '/Typ/,/Messzeit/d;/^[ \t]*$/d' /dev/ttyUSB0 | while read line; do- > filename.fas
  echo "$(date '+%Y/%m/%d'-) $line"
echo '$Line' | \ awk -v OFS=, '{split($1,d,"."); gsub(",","."); $20/=10; sub(","," ");}'-> log.txt
done >> /home/pi/record.log

Kilowatt

(Themenstarter)

Anmeldungsdatum:
4. Dezember 2017

Beiträge: 63

Wohnort: Salzgitter

Irgendwie kommt immer bash: awk: Kommando nicht gefunden.

1
2
pi@raspberrypi:~ $ echo '06.12.2017 22:51:59 030,0 033,9 028,7 017,5 003,8 003,2 053,2 033,0 007,2 000 050 099 035 111 079315319 000943235  3,8 00210 06650' | \ awk -v OFS=, '{split($1,d,".");gsub(",",".");$20/=10;sub(","," ");print}'
bash:  awk: Kommando nicht gefunden.

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11301

Wohnort: München

Du hast ein "\ " vor dem awk, daher sucht er nach dem Befehk " awk" statt "awk"

Kilowatt

(Themenstarter)

Anmeldungsdatum:
4. Dezember 2017

Beiträge: 63

Wohnort: Salzgitter

Dein Script funktioniert natürlich, wie immer-😉

Kannst Du bitte drüber schauen wieso es so nicht funktioniert ?

1
2
3
4
5
6
#!/bin/sh
stty -F /dev/ttyUSB0 19200  
sed -u '/Typ/,/Messzeit/d;/^[ \t]*$/d' /dev/ttyUSB0 | while read line; do
echo "$(date '+%Y/%m/%d'-) $line"
echo '$Line' | \awk -v OFS=, '{split($1,d,"."); gsub(",","."); $20/=10; sub(","," ");}' -> log.txt
done >> /var/www/html/log.txt

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Wohnort: Wolfen (S-A)

Kilowatt schrieb:

Umrechnen ist zweitrangig, gibt es eine Möglichkeit diesen Skript in schon vorhandene Serielle Schnittstellen Abfrage zu implementieren?

Ja sicher ! - wenn wir das schon vorhandene sed mit benutzen, wird die Sache sogar noch deutlich einfacher.

Wir benutzen da schon sed bei löschen fehlerhaften Zeilen, ist da nicht gleich die Umwandlung möglich ?

Ja, zum Teil.
Vor allem aber können wir diese blöde Shell-Schleife mit dem "date" weglassen, denn das kann awk ja nun wirklich in der Backentasche mit erledigen:
(und vor allem: das Datum erstmal falsch schreiben, nur um es dann nachträglich mühsam um zu formatieren - das ist doch Quatsch !)

#!/bin/sh

stty -F /dev/ttyUSB0 19200  
sed -u '/Typ/,/Messzeit/d;/^[ \t]*$/d; s/,/./g; s/ /,/g'  /dev/ttyUSB0  |  awk -F, '{OFS=FS; $20/=10; print strftime("%Y/%m/%d-") $0}'  >> /home/pi/record.log

Der 1. gelbe Block (bei sed) ändert alle Kommas in Punkte und alle Leerzeichen in Kommas,
der 2. gelbe Block (bei awk) fügt das Tagesdatum ein, genau so wie Du es haben wolltest.

Ja - so wird langsam ein Schuh daraus ...

LG,

track

Kilowatt

(Themenstarter)

Anmeldungsdatum:
4. Dezember 2017

Beiträge: 63

Wohnort: Salzgitter

1
2
3
4
5
6
7
pi@raspberrypi:~ $ #!/bin/sh
pi@raspberrypi:~ $ 
pi@raspberrypi:~ $ 
pi@raspberrypi:~ $ 
pi@raspberrypi:~ $ stty -F /dev/ttyUSB0 19200  
pi@raspberrypi:~ $ 
pi@raspberrypi:~ $ sed -u '/Typ/,/Messzeit/d;/^[ \t]*$/d; s/,/./g; s/ /,/g'  /dev/ttyUSB0  |  awk -F, '{OFS=FS; $20/=10; print strftime("%Y/%m/%d-") $0}'  >> log.txt

SUPER!!! Perfekt! Es funktioniert !! Irgendwie macht der doppelten Tab und doppelte Komma ?

2017/12/23-23:42:51 029,2 033,8 028,3 017,2 004,9 006,3 057,6 029,6 008,6 050 050 099 030 110 080547379 001309405  4,2 00232 07500
2017/12/23-23:43:01 029,2 033,8 028,3 017,2 004,9 006,2 057,6 029,5 008,6 050 050 099 030 110 080547399 001309405  4,2 00232 07500
2017/12/23-23:43:11 029,2 033,8 028,3 017,2 004,9 006,2 057,6 029,5 008,6 050 050 099 030 110 080547419 001309410  4,2 00232 07800
2017/12/23-23:43:21 029,2 033,8 028,3 017,2 004,8 006,1 057,5 029,6 008,7 050 050 099 030 110 080547439 001309415  4,1 00234 07500
2017/12/23-23:43:31 029,3 033,8 028,3 017,2 004,8 006,0 057,6 029,6 008,5 050 050 099 030 110 080547454 001309420  4,1 00234 07500
2017/12/23-23:43:41 029,2 033,7 028,3 017,2 004,8 006,1 057,6 029,6 008,6 050 050 099 030 110 080547474 001309425  4,3 00232 07500
2017/12/23-23:49:31,029.2,033.9,028.4,017.2,004.9,005.9,057.6,029.7,008.6,050,050,099,030,110,080548154,001309590,,4.1,23.2,07500
2017/12/23-23:49:41,029.2,033.9,028.5,017.2,004.9,006.1,057.6,029.7,008.7,050,050,099,030,110,080548174,001309595,,4.3,23.4,07500
2017/12/23-23:49:51,029.2,033.9,028.4,017.2,004.9,006.2,057.6,029.7,008.6,050,050,099,030,110,080548194,001309600,,4.2,23.2,07800
2017/12/23-23:50:01,029.2,033.9,028.5,017.2,005.0,006.1,057.6,029.7,008.7,050,050,099,030,110,080548214,001309600,,4.2,23.2,07500
2017/12/23-23:50:11,029.2,033.9,028.4,017.2,005.0,005.8,057.7,029.7,008.7,050,050,099,030,110,080548234,001309605,,4.2,23.2,07800
2017/12/23-23:50:21,029.2,033.9,028.5,017.2,004.9,005.7,057.7,029.7,008.6,000,050,099,030,110,080548249,001309610,,4.1,23.4,07500
2017/12/23-23:50:31,029.2,034.0,028.4,017.2,004.9,005.8,057.6,029.7,008.7,050,050,099,030,110,080548269,001309615,,4.1,23.4,07500
2017/12/23-23:50:41,029.2,034.0,028.5,017.2,004.9,005.7,057.7,029.7,008.7,050,050,099,030,110,080548289,001309620,,4.1,23.2,07500
2017/12/23-23:50:51,029.2,034.0,028.5,017.2,005.0,005.6,057.6,029.7,008.7,050,050,099,030,110,080548309,001309625,,4.3,23.2,07800
2017/12/23-23:51:01,029.2,033.9,028.5,017.2,004.9,005.7,057.6,029.8,008.7,050,050,099,030,110,080548329,001309630,,4.2,23.2,07500

Kilowatt

(Themenstarter)

Anmeldungsdatum:
4. Dezember 2017

Beiträge: 63

Wohnort: Salzgitter

Es muss irgendwann dazwischen passiert sein. An dem Heizungsregler war ich nicht dran, kann es irgendwie mit einer zweistelliger Zahl zusammenhängen?

05.12.2017 
05.12.2017 11:11:26 030,0 034,8 027,8 019,2 003,6 002,8 051,9 032,8 006,1 050 050 099 050 111 079198070 000913430 4,8 00208 07980
05.12.2017 
05.12.2017 11:11:36 030,0 034,7 027,8 019,2 003,6 002,7 052,0 032,7 006,1 050 050 099 050 111 079198094 000913435 4,7 00208 11040
05.12.2017 
05.12.2017 11:11:46 030,0 034,7 027,8 019,2 003,6 002,7 052,0 032,8 006,1 050 050 099 050 111 079198122 000913440 4,9 00210 10640
05.12.2017 
05.12.2017 11:11:56 030,0 034,8 027,8 019,2 003,6 002,7 052,0 032,8 006,1 050 050 099 050 111 079198140 000913445 4,7 00210 08280
05.12.2017 
05.12.2017 11:12:06 030,0 034,9 027,8 019,2 003,6 002,8 052,0 032,7 006,1 050 050 099 050 111 079198172 000913450 5,0 00210 10640
05.12.2017 11:12:16 030,0 034,8 027,8 019,2 003,7 002,7 052,0 032,8 006,1 050 050 099 050 111 079198196 000913455 0,2 00210 11040
05.12.2017 
05.12.2017 
05.12.2017 
05.12.2017 
05.12.2017 
05.12.2017 
05.12.2017 
05.12.2017 11:13:36 030,0 034,8 027,8 019,2 003,6 002,7 052,0 032,8 006,1 050 050 099 050 111 079198414 000913495 4,6 00210 11040
05.12.2017 11:13:46 030,0 034,8 027,8 019,2 003,6 002,7 052,0 032,8 006,1 050 050 099 050 111 079198446 000913500 4,6 00210 11040
05.12.2017 
05.12.2017 11:14:06 030,0 034,8 027,8 019,2 003,5 002,7 052,1 032,7 006,1 050 050 099 050 111 079198496 000913510 4,8 00210 11040
05.12.2017 11:14:16 030,0 034,8 027,8 019,2 003,5 002,7 052,0 032,7 006,1 050 050 099 050 111 079198516 000913515 4,9 00210 11040
05.12.2017 11:14:26 030,0 034,8 027,8 019,2 003,6 002,7 052,0 032,8 006,1 050 050 099 050 111 079198548 000913520 4,9 00208 11040
05.12.2017 11:14:36 030,0 034,8 027,8 019,2 003,6 002,7 052,0 032,8 006,0 050 050 099 050 111 079198572 000913525 0,1 00208 11040
05.12.2017 11:14:46 030,0 034,8 027,8 019,2 003,6 002,7 052,0 032,8 006,1 050 050 099 050 111 079198604 000913530 1,0 00210 11040
05.12.2017 11:22:06 030,0 034,0 027,9 019,3 003,6 002,7 052,2 032,8 006,1 050 050 099 050 111 079199708 000913745  4,3 00210 08280
05.12.2017 11:22:16 030,0 034,0 027,9 019,3 003,6 002,7 052,2 032,9 006,1 050 050 099 050 111 079199732 000913750  4,2 00208 07980
05.12.2017 11:22:26 030,0 033,9 027,9 019,3 003,6 002,7 052,1 032,8 006,1 050 050 099 050 111 079199750 000913755  4,3 00210 08280
05.12.2017 11:22:36 030,0 033,9 028,0 019,3 003,6 002,7 052,1 032,9 006,1 050 050 099 050 111 079199774 000913760  4,1 00210 07980
05.12.2017 11:22:46 030,0 034,0 027,9 019,3 003,6 002,7 052,1 032,8 006,2 050 050 099 050 111 079199792 000913765  4,3 00210 07980
05.12.2017 11:22:56 030,0 034,0 027,9 019,3 003,6 002,7 052,1 032,8 006,2 050 050 099 050 111 079199816 000913770  4,1 00210 08280
05.12.2017 11:23:06 030,0 034,0 028,0 019,3 003,6 002,7 052,0 032,8 006,2 050 050 099 050 111 079199834 000913775  4,3 00210 07980
05.12.2017 11:23:16 030,0 033,9 027,9 019,3 003,6 002,7 052,1 032,9 006,1 050 050 099 050 111 079199858 000913780  4,1 00208 08280
05.12.2017 11:23:26 030,0 034,0 027,9 019,3 003,6 002,7 052,1 032,9 006,1 050 050 099 050 111 079199876 000913785  4,3 00210 08280

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Wohnort: Wolfen (S-A)

Kilowatt schrieb:

Irgendwie macht der doppelten Tab und doppelte Komma ?

2017/12/23-23:42:51 029,2 033,8 028,3 017,2 004,9 006,3 057,6 029,6 008,6 050 050 099 030 110 080547379 001309405  4,2 00232 07500
2017/12/23-23:49:31,029.2,033.9,028.4,017.2,004.9,005.9,057.6,029.7,008.6,050,050,099,030,110,080548154,001309590,,4.1,23.2,07500

Ja, über die doppelten Leerzeichen war ich auch schon gestolpert ... (kommt aber offenbar original so von Deinem Regler !)
Und das sed die Leerzeichen sauber (und blind) in Kommas umsetzt, während es für awk egal ist, wie viele Leerzeichen jeweils zwischen den Spalten stehen, gibt es da einen Unterschied.

→ Wenn Du dort das Verhalten von awk wieder haben willst, dann musst Du das Umsetzen der Spalten eben von awk machen lassen. Dann hast Du es:

sed -u '/Typ/,/Messzeit/d;/^[ \t]*$/d; s/,/./g      '  /dev/ttyUSB0  |  awk     '{OFS=","; $20/=10; print strftime("%Y/%m/%d-") $0}'  >> log.txt

Was da in der Zwischenzeit mit Deinem Regler los war, weiß ich allerdings auch nicht ...
Das ist der Nachteil, wenn Du alle Meldungen (außer den nackten Messwerten) wegfilterst: dann gibt es nix mehr, um sowas nachzuvollziehen. (höchstens einen Stromausfall, den merkt man auch so)

LG,

track

Kilowatt

(Themenstarter)

Anmeldungsdatum:
4. Dezember 2017

Beiträge: 63

Wohnort: Salzgitter

Jetzt werden hinten zwei nullen abgeschnitten und wird nicht mehr durch 10 geteilt.

2017/12/24-01:13:00,029.2,035.1,029.7,017.5,005.4,005.5,058.3,031.1,008.7,050,050,100,030,110,080557874,001311950,,4.0,23.4,07500
2017/12/24-01:13:10,029.2,035.2,029.7,017.5,005.3,005.6,058.3,031.2,008.6,050,050,100,030,110,080557894,001311955,,4.0,23.2,07800
2017/12/24-01:13:20,029.2,035.1,029.7,017.5,005.3,005.5,058.3,031.1,008.6,050,050,099,030,110,080557914,001311960,,4.0,23.4,07800
2017/12/24-01:16:50,029.2,035.2,029.7,017.5,005.3,005.3,058.3,031.2,008.6,000,050,100,030,110,080558319,001312060,4.1,00232,750
2017/12/24-01:17:00,029.2,035.3,029.7,017.5,005.3,005.4,058.3,031.2,008.6,050,050,100,030,110,080558339,001312065,4.1,00232,780
2017/12/24-01:17:10,029.2,035.2,029.7,017.5,005.3,005.3,058.3,031.2,008.6,050,050,099,030,110,080558359,001312070,4.1,00234,750
2017/12/24-01:17:20,029.2,035.1,029.7,017.5,005.3,005.3,058.3,031.2,008.6,050,050,099,030,110,080558379,001312075,4.1,00232,750

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Wohnort: Wolfen (S-A)

Kilowatt schrieb:

Jetzt werden hinten zwei nullen abgeschnitten und wird nicht mehr durch 10 geteilt.

2017/12/24-01:13:20,029.2,035.1,029.7,017.5,005.3,005.5,058.3,031.1,008.6,050,050,099,030,110,080557914,001311960,,4.0,23.4,07800
2017/12/24-01:16:50,029.2,035.2,029.7,017.5,005.3,005.3,058.3,031.2,008.6,000,050,100,030,110,080558319,001312060,4.1,00232,750

Irrtum ! - es wird immer noch das Feld 20 durch 10 geteilt, nur sind die Zahlen jetzt 1 Spalte vor gerutscht ...

Also brauchst Du doch die Version, die ich Dir schon vorgeschlagen hatte: bei der awk die Spaltenaufteilung macht !

Ansonsten, wie ich schon bei einem Deiner 1. Stränge gesagt hatte: besser zuerst alles mitloggen, und dann die Umformatierung / Auswertung mit tail -f an die Log-Datei dranhängen, als unabhängigen Prozess.

LG,

track