Ich habe eine Logdatei mit vielen Einträgen. Einige von ihnen beginnen mit einem Datum, andere nicht. Ich möchte alle Einträge aus diesem/letzten Monat mit "UpgradeResource] part: 3-V12345678-12-"
in der Zeile suchen und die Ergebnisse nach Box gruppiert zählen. Eigentlich gibt es 9 Boxen, die von 1 bis 9 zählen, aber wenn wir eine andere Box kaufen, gibt es eine 10 oder 11 & hellip; Auf den Box-Zähler folgt immer -1 am Ende der Zeile.Suche und gruppieren von Logfile
Die Zeilen, die ich für aussehen wie diese suchen:
2016-04-27 11:49:43,895 INFO [ajp-apr-8009-exec-9] [com.xxx.shared.yyy.UpgradeResource] part: 3-V12345678-12-5-245, box: 3-V12345678-38-3-1 ... 2016-04-27 11:49:43,895 INFO [ajp-apr-8009-exec-9][com.xxx.shared.yyy.UpgradeResource] part: 3-V12345678-12-4-112, box: 3-V12345678-38-1-1
Mein Ergebnis-Ausgabe sollte sein:
Month 03/2016: Box 1: 10 times Box 2: 123 times Box 3: 65 times Month 04/2016: Box 1: 75 times Box 2: 13 times Box 3: 147 times
Ich bin nicht sehr fest im Umgang mit Powershell und versucht, dies aber Fehler bekommen und denken ich bin nicht auf dem richtigen Weg:
$inputfile = "C:\temp\result.txt"
$matchstring = "(?\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}).*UpgradeResource] part: 3-V12345678-12-(?.*?), box: 3-V12345678-38-(\d{1})-1"
Get-Content $inputfile | foreach {
if ($_ -match $matchstring) {
"" | select @{n='Date';e={$matches.date}},@{n='Key';e={$matches.Key}},@{n='PD';e={$matches.PD}}
}
}
der Fehler erhalte ich:
"(?\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}).*UpgradeResource] part: 3-V12345678-12-(?.*?), box: 3-V1001686-38-(\d{1})-1" wird analysiert - Unbekanntes Gruppierungskonstrukt. In C:\temp\count.ps1:16 Zeichen:6 + if ($_ -match $matchstring) + ~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : OperationStopped: (:) [], ArgumentException + FullyQualifiedErrorId : System.ArgumentException
Sie können Ihre regex in einem Tool wie https://regex101.com/ testen. Es gibt einige "?" In deinem Matchstring, die nicht akzeptiert werden. – Martin