Ich weiß, es gibt viele Fragen zu diesem Thema, die awnsered alreade sind, aber leider keine, die mir in meinem Fall geholfen: ich eine Datei server.log habe wie folgt aussehen:Split Textdatei in Powershell für Zeile und String
################################################## ServerLog 07.07.2017 1:00:02,02 Software Version 2.5 (modified 30.06.2017 15:53) ################################################## Number of clients: 4 KB-Server is online --------------------------------------------------------------------- --------------------------------------------------------------------- Client 1 current client: \\192.168.0.22\Dauerversuch01 Connecting the network share successfull? client connected successfully No files found --------------------------------------------------------------------- --------------------------------------------------------------------- Client 2 current client: \\192.168.0.23\Dauerversuch01 Connecting the network share successfull? client connected successfully 3 Files found in the directory Copy from Client to local HDD: "\\192.168.0.23\Dauerversuch01 --> D:\Transfer" All files passed the md5 check Files won't get analysed by GlyphWorks copy files from hdd to server: "D:\Transfer --> \\mucs0244\Pool\CoC-AS\MessdatenQuantum\Dauerversuch_01_DUMMY\2017\07" All files passed the md5 check files were transfered successfully from the client to the server --------------------------------------------------------------------- --------------------------------------------------------------------- Client 3 current client: \\192.168.0.24\Dauerversuch Connecting the network share successfull? client connected successfully 3 Files found in the directory Copy from Client to local HDD: "\\192.168.0.24\Dauerversuch --> D:\Transfer" All files passed the md5 check Files won't get analysed by GlyphWorks copy files from hdd to server: "D:\Transfer --> \\mucs0244\Pool\CoC-AS\MessdatenQuantum\Dauerversuchspruefstand_02_SL20-4\2017\07" All files passed the md5 check files were transfered successfully from the client to the server --------------------------------------------------------------------- --------------------------------------------------------------------- Client 4 current client: \\192.168.0.25\Dauerversuch01 Connecting the network share successfull? client connected successfully 3 Files found in the directory Copy from Client to local HDD: "\\192.168.0.25\Dauerversuch01 --> D:\Transfer" All files passed the md5 check Files won't get analysed by GlyphWorks copy files from hdd to server: "D:\Transfer --> \\mucs0244\Pool\CoC-AS\MessdatenQuantum\Dauerversuch_01_DUMMY2\2017\07" All files passed the md5 check files were transfered successfully from the client to the server --------------------------------------------------------------------- --------------------------------------------------------------------- Batch erfolgreich beendet
Wahrscheinlich schon erraten, möchte ich die server.log in Client-Logs aufteilen. Um genau zu sein möchte ich mein PowerShell-Skript mit einer Client-Nummer als Eingabeparameter ausführen können, das Skript sollte dann zB ausgeben. client2.log wie folgt aussehen:
--------------------------------------------------------------------- Client 2 current client: \\192.168.0.23\Dauerversuch01 Connecting the network share successfull? client connected successfully 3 Files found in the directory Copy from Client to local HDD: "\\192.168.0.23\Dauerversuch01 --> D:\Transfer" All files passed the md5 check Files won't get analysed by GlyphWorks copy files from hdd to server: "D:\Transfer --> \\mucs0244\Pool\CoC-AS\MessdatenQuantum\Dauerversuch_01_DUMMY\2017\07" All files passed the md5 check files were transfered successfully from the client to the server ---------------------------------------------------------------------
Das Beste, was ich ist dieses kleine Skript
$file = (GC H:\server.log)
foreach ($line in $file) {
if ($line -match "^Client \w+") {
$newfile = "$($line.Split(' ')[1]).txt"
} else {
$line | Out-File -Append $newfile
}
}
tun konnte, aber diese nicht richtig funktionieren und für die „----“ Linien der Suche funktioniert nicht .
Vielleicht sollten Sie die Protokollierung der Software ändern, die Sie verwenden, um diese stattdessen zu erstellen? Parsing Freeform Textdateien ist ein echter Schmerz. – Vesper
Nicht wirklich möglich leider, aber ich könnte die Software ändern, um sagen wir nur eine "--------" Zeile, aber ich habe keine Idee, wie man es dann entweder ... –
"(? S) (? = Client \ s \ d). *? (? = ---) "sollte mit dem vollständigen Block für einen Client übereinstimmen. Dann, wenn ich mich nicht falsch erinnere, werden die Übereinstimmungen im Array (?) $ Match sein, durchlaufen Sie es und schreiben Sie das Protokoll basierend auf der ersten Zeile in der Übereinstimmung. _ (wahrscheinlich eine schönere Art, die Regex zu schreiben) _ – Jonas