Thread Logs in eine CSV Datei schreiben (1 answers)
Opened by The_Patcher at 2019-03-08 14:35

The_Patcher
 2019-03-08 14:35
#189882 #189882
User since
2019-03-08
1 Artikel
BenutzerIn
[default_avatar]
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

9:40
Word ; 7 ; 2
Excel ; 5 ; 2
Notepad ; 5 ; 1
Corel ; 5 ; 2
9:50
Word ; 7 ; 2
Excel ; 5 ; 2
Notepad ; 5 ; 1
Corel ; 5 ; 5

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
A B
1 08.03.2019
2 Word 2
3 Excel 2
4 Notepad 1
5 Corel 5

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
A B C
1 08.03.2019 09.03.2019
2 Word 2 1
3 Excel 2 3
4 Notepad 1 2
5 Corel 5 4

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)

View full thread Logs in eine CSV Datei schreiben