uppe
Goto Top

Textdatei zeilenweise vergleichen

Hallo,

ich habe eine Datei mit tausenden Zeilen der Form:

[00:00:03.3530] [13] EVENT: STARTJOB JOB: JOBNAME

Ich habe mir eine Schleife gebastelt, die mir jede Zeile in zwei Teilen ausgibt (erster Teil [00:00:03.3530], zweiter Teil der Rest)

Nun möchte ich zeilenweise suchen, ob es den zweiten Teil ([13] EVENT: STARTJOB JOB: JOBNAME) nochmal in der Datei gibt.
Wenn ja, dann sollen die Zeiten ([00:00:03.3530]) verglichen werden. Ist die Zeitdifferenz kleiner als 1 Minute soll die Zeile unverändert stehen bleiben.
Differieren die Zeiten um mehr als eine Minute soll die Zeile gelöscht werden.

Könnt ihr mir helfen, dieses für mich riiiiiesige Problem zu lösen?

Danke und Gruß
Uppe

Content-ID: 127168

Url: https://administrator.de/contentid/127168

Ausgedruckt am: 26.11.2024 um 21:11 Uhr

60730
60730 15.10.2009 um 11:00:53 Uhr
Goto Top
Servus,

so ganz verstehe ich dein Problem nicht...

ich habe eine Datei mit tausenden Zeilen der Form:
[00:00:03.3530] [13] EVENT: STARTJOB JOB: JOBNAME

Wenn ich pi * Daumen nachrechne - komme ich an einem Tag nicht auf tausende minuten (nur 1440)- und wenn ich das "log" richtig deute - fehlt da ein Datum - ist nur die Uhrzeit.

Von daher und weil du deine bisherige Schleife noch nicht gepostet hast...

  • denk ich nicht weiter drüber nach face-wink - Bis du uns weiter aufklärst face-wink face-wink

Gruß
Uppe
Uppe 15.10.2009 um 11:22:33 Uhr
Goto Top
Hallo Timo,

aber es gibt pro Minute 60 Sekunden (und auch noch Milli... und Zehntel...) und pro Sekunde können auch mehrere Jobs gestartet und beendet werden.
Es gibt kein Datum, weil pro Tag eine neue Datei geschrieben wird.

Bisher habe ich folgendes:

findstr "STARTJOB CHANGE_STATUS" events.log > test.txt  
FOR /f "tokens=1,*" %%i IN (test.txt) DO echo %%i,%%j   


Mit der ersten Zeile filtere ich alle für mich interessanten Events aus meiner Ausgangsdatei in eine test.txt
Danach habe ich eine Schleife, die jede Zeile in zwei Teile zerschneidet.

Aber wie ich diese Teile nun vergleiche, weiß ich leider nicht.

Wenn noch Informationen fehlen, bitte nachfragen.

Danke und Gruß
Uppe
60730
60730 15.10.2009 um 12:21:29 Uhr
Goto Top
Servus Uppe,

ich gebs zu - ist mir zu kompliziert und ich seh den Hintergrund immer noch nicht...

Nachträglich an einem Logfile zu editieren - das den Start von Jobs protokolliert hat, die evtl. im milisekundenbereich gestartet werden?

Ist die Zeitdifferenz kleiner als 1 Minute soll die Zeile unverändert stehen bleiben.
Differieren die Zeiten um mehr als eine Minute soll die Zeile gelöscht werden.

In zusammenhang, damit - wäre wohl ein Delim : angebracht - aber wie geschrieben - ist mir grade zu kompliziert.

Gruß
Uppe
Uppe 15.10.2009 um 12:30:23 Uhr
Goto Top
Hallo Timo,

Hintergrund ist, einen Fehler zu finden.

Normalerweise werden die verschiedenen Jobs maximal alle 5 Minuten gestartet. Es gibt aber auch Jobs, die laufen nur einmal am Tag oder jede Stunde usw.

Wir haben aber das Phänomen, dass unter bestimmten Umständen (die wir versuchen herauszufinden) ein und derselbe Job zweimal angestartet wird, d.h. innerhalb einer Minute ein zweites Mal.

Und um diese Stellen zu finden, möchte ich in dem Logfile alle Jobs finden, die innerhalb einer Minute zwei Einträge haben.

Gruß Uppe
60730
60730 15.10.2009 um 18:12:33 Uhr
Goto Top
Machs doch anders..

findstr "STARTJOB CHANGE_STATUS" events.log > test.txt   
findstr "STARTJOB JOB: JOBNAME1" test.txt > jobname1.txt  

Denn Ihr wollt ja erstmal einen Job debuggen - so denk ich mir das - (Jobname steht nur als Pseudonym und nicht als realer Wert)

Gruß
Uppe
Uppe 15.10.2009 um 19:05:05 Uhr
Goto Top
Hallo Timo,

aber dann bekomme ich jeden Jobnamen. Ich möchte aber nur die, die auch wirklich zwei Einträge innerhalb einer Minute haben.

Gruß Uppe