Thread Logs in eine CSV Datei schreiben
(1 answers)
Opened by The_Patcher at 2019-03-08 14:35
Servus alle miteinander,
zuallererst habt bitte Nachsicht mit mir, ich bin ein kompletter Neueinsteiger der sich gerade durch die Bücher und Wikis durchkämpft aber irgendwie komme ich trotzdem nicht mit meinem Problem weiter! Ausgangslage ist folgende: Ich erstelle mir jede 10Minuten eine Log-Datei in der mir angezeigt wird wieviele Programme gerade verwendet werden: Aufbau: Programm ; verfügbar ; in Benutztung Quote So eine Datei habe ich dann für jeden Tag. Sie heissen zb. 08.03.2019_uebersicht.txt Mit dem folgenden Code habe ich es jetzt schonmal geschafft das ich mit Perl eine CSV Tabelle erstelle die dann nur noch die Programmnamen enthält das Datum und zu jedem Programm den Tages Max Wert Quote Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 use strict; use warnings; use POSIX qw/ strftime /; # Deklarationsteil allgemein my $datum = strftime("%d.%m.%Y", localtime); my $tag = strftime("%d", localtime); # Gekürzt um nur 18 anzuzeigen my $monat = strftime("%m", localtime); # Gekürzt um nur Monat anzuzeigen my $jahr = strftime("%Y", localtime); # Gekürzt um nur Jahr anzuzeigen my $line; # Main Programm &progmax; # Subroutine progmax sub progmax{ my $file = "C:\\test\\08.03.2019_uebersicht.txt"; # Quelldatei des Tageslogs my $file2 = "C:\\test\\03.2019.csv"; # Name der Zieldatei my $anzzeilen = 0; # Zeilen in der Quelldatei zählen auf 0 setzten my ($index); my (@index); my (@daten); my %verfugbar = (); my %max = (); open (QUELLEneu, $file) || die " FEHLER: Datei $file nicht gefunden !!"; # Quelldatei öffnen, wenn nicht vorhanden abbrechen while (<QUELLEneu>) { $line = $_; # Quelldatei zeilenweise abarbeiten if ($line =~ /(\d{1,2}:\d{2})/){ # Ist die Zeile eine Uhrzeit?? next} # Dann einfach weiter und die Uhrzeit nicht beachten elsif (chomp($line)){ # Quellzeile glätten $anzzeilen++; # Zeilen in der Quelldatei zählen @daten = split(/ ; /,$line); # Eingelesene Zeile splitten (ist durch ; getrennt) $index = $daten[0]; @index = $daten[0]; $verfugbar{$index} = $daten[1]; if ($max{$index} <= $daten[2]) { $max{$index} = $daten[2]; } } } open (ZIEL, ">$file2"); print ZIEL ";$datum\n"; print ZIEL sort {"\U$a" cmp "\U$b"} map { "$_ ; $max{$_};\n" } keys %max; close (QUELLEneu); close (ZIEL); } Jetzt habe ich aber das Problem das am darauffolgenden Tag die CSV durch die neuen Werte ergänzt werden soll. Sprich es soll dann so aussehen Quote Ich versuche gerade alles was ich mir in der kukrzen Zeit angeeigenet habe zu realisieren, aber ich bekomme es nicht hin, die Arrays nach rechtts zu ergänzen! Last edited: 2019-03-08 15:12:34 +0100 (CET) |