Hallo!
Schlage mich hier mit der Auswertung eines Logs von meinem Mähroboter rum und komme nicht weiter :(
Holen tue ich mir die Logs folgendermaßen:
Zitat
attr Robby userReadings Maehzeiten { `awk -F_ '{print \$2}' $defs{FileLog_RobbyStatus}{currentlogfile}` }
Der Log sieht dann in FHEM so aus:
Zitat
10:00:53 RobbyStatus Maehstart
11:23:53 RobbyStatus Suche-Basis
11:29:53 RobbyStatus Aufladen
12:23:53 RobbyStatus Maehstart
13:48:53 RobbyStatus Suche-Basis
13:55:01 RobbyStatus Aufladen
14:49:20 RobbyStatus Maehstart
16:14:11 RobbyStatus Suche-Basis
16:16:11 RobbyStatus Aufladen
17:08:11 RobbyStatus Maehstart
18:33:11 RobbyStatus Aufladen
19:26:11 RobbyStatus Maehstart
20:01:20 RobbyStatus Suche-Basis
20:05:20 RobbyStatus Aufladen
20:30:09 RobbyStatus Schlafen
Ich hätte diesen printout jetzt aber sehr gern ohne die Worte "RobbyStatus"
So dass der Log gekürzt so aussehen soll:
Zitat
10:00:53 Maehstart
11:23:53 Suche-Basis
11:29:53 Aufladen
12:23:53 Maehstart
13:48:53 Suche-Basis
13:55:01 Aufladen
14:49:20 Maehstart
16:14:11 Suche-Basis
16:16:11 Aufladen
17:08:11 Maehstart
18:33:11 Aufladen
19:26:11 Maehstart
20:01:20 Suche-Basis
20:05:20 Aufladen
20:30:09 Schlafen
Kann mir dort bitte jemand helfen, der sicher mehr Programmierkenntnis in akw hat als ich?
Hi,
probiers mal bitte so
awk '{print $2 " " $3}' < test.txt
Den Dateinamen natürlich ersetzen.
VG,
Dirk
Zitat von: Devender am 30 Juni 2018, 09:55:34
Hi,
probiers mal bitte so
awk '{print $2 " " $3}' < test.txt
VG,
Dirk
Hallo Dirk!
Danke für deine Hilfe!
Ich habe es nun so übernommen:
Zitat
attr Robby userReadings Maehzeiten { `awk -F_ '{print $2 " " $3}' $defs{FileLog_RobbyStatus}{currentlogfile}` }
Damit bleibt die Ausgabe leer :(
Es gibt nur einen print bei $1 (da wird nur das Datum angezeigt) und $2 (dort wird das angezeigt, was ich oben gepostet habe)
Ein $3 und folgende bringen keine Ausgabe mehr.
Hast du noch eine andere Idee?
Ja, lass das -F_ weg ;)
Das hatte ich in meinem Beispiel auch nicht geschrieben
Zitat von: Devender am 30 Juni 2018, 13:08:05
Ja, lass das -F_ weg ;)
Ändert leider nichts. Habs auch in der Konsole getestet, es kommt keine Ausgabe.
Wie gesagt, $3 hat keinen Inhalt.
und nu? :(
Schon komisch, da ich es ja selbst auf der Konsole getestet hatte.
Kannst auch mal die ` weglassen.
Wenns immer RobbyStatus ist, kannst du es auch mit
sed 's/RobbyStatus//g'
Entfernen, anstelle awk.
Kannst ja sonst mal nen par Zeilen der logdatei angaengen als Datei.
Vielleicht hast da noch Steuerzeichen drin.
Zitat von: Devender am 30 Juni 2018, 13:29:11
Wenns immer RobbyStatus ist, kannst du es auch mit
sed 's/RobbyStatus//g'
Entfernen, anstelle awk.
Zitat
Unknown command sed, try help.
Da scheint ja dann wirklich der Wurm drin zu sein.
Und weglassen der Steuerzeichen bringt auch nichts.
Was möchtest du aus dem log haben?
Den Inhalt vom Statuslog hatte ich oben gepostet...
Das log als Datei, dann teste ich das mal damit
Zitat von: Devender am 30 Juni 2018, 15:36:28
Das log als Datei, dann teste ich das mal damit
Oh sorry
Hi,
also selbst mit deinem Original Logfile funktioniert der awk Befehl auf meiner Rpi Konsole:
pi@rechnername:/home/transfer $ awk '{print $1 " " $3}' < RobbyStatus-2018-06-29.log
2018-06-29_10:00:53 Maehstart
2018-06-29_11:23:53 Suche-Basis
2018-06-29_11:29:53 Aufladen
2018-06-29_12:23:53 Maehstart
2018-06-29_13:48:53 Suche-Basis
2018-06-29_13:55:01 Aufladen
2018-06-29_14:49:20 Maehstart
2018-06-29_16:14:11 Suche-Basis
2018-06-29_16:16:11 Aufladen
2018-06-29_17:08:11 Maehstart
2018-06-29_18:33:11 Aufladen
2018-06-29_19:26:11 Maehstart
2018-06-29_20:01:20 Suche-Basis
2018-06-29_20:05:20 Aufladen
2018-06-29_20:30:09 Schlafen
Du bekommst hier natürlich auch das Datum dazu, da es zusammenhängen mit der Zeit ist.
Daher funktioniert mein awk auf Basis deines ersten Post nicht zu 100%.
Zeigt es denn so die Ausgabe an?
Zitat von: Devender am 30 Juni 2018, 18:51:04
Hi,
Du bekommst hier natürlich auch das Datum dazu, da es zusammenhängen mit der Zeit ist.
Daher funktioniert mein awk auf Basis deines ersten Post nicht zu 100%.
Zeigt es denn so die Ausgabe an?
Nein, funktioniert so nicht.
Hat es damit zu tun, dass ja der zu verwendende Log ein Userreading ist, dass immer den tagesaktuellen log benutzt?
Zitat
.......$defs{FileLog_RobbyStatus}{currentlogfile}` }
Ich bekomme weder in der Konsole noch wenn ich es so wie von dir vorgegeben in die Config schreibe eine Ausgabe :(
das { `awk -F_ '{print kürzt übrigens die Ausgabe und reduziert diese nur auf die Uhrzeit...
Habe schon so ziemlich alle Varianten durch.
Wäre ein anderer Lösungsansatz den ganzen Log nicht als Userreading zu basteln?
Habe hier bei der Suche im Board einige gefunden, die der Meinung sind, das Userreading unnötig wären...
Aber
Ich hab ja keine Ahnung von nichts, plappere also auch nur das Gelesene nach...
Hast du noch eine andere Idee?
ich pushe das mal...
Der Kollege meldet sich nicht mehr, ist wohl an dem Problem verzweifelt, genau wie ich.
Ist hier noch jemand, der evtl. eine Idee hat?