Hallo in die Runde,
ich habe mich noch ein paar Stunden mit dem „Problem“ beschäftigt und wollte es „einfach“ machen.
Die Beispieldatei von oben wird eingelesen und Zeilenweise in eine Queue geschrieben.
Diese wird als erstes auf das Blockende hin untersucht, wenn dies gefunden, in einer zweiten if Schleife hin auf den Inhalt des Suchbegriffs.
Wenn dieser gefunden, wird der Inhalt der Queue auf den Schirm ausgegeben.
Da die Zeile nach dem Blockende immer der Start eines neuen Blocks ist, sollte auch immer nach dem „Blockende gefunden > Queue gelöscht“ ein neuer Block in der Queue angelegt werden.
Ich mache es kurz, es geht nicht (siehe Ausgabe am Ende). Die Queue wird nicht nach den beiden Suchbegriffen durchsucht. Zudem wird die Queue nicht Zeilenweise um Einträge ergänzt. Es wird in der Queue dem ersten Eintrag direkt die nächste Zeile aus der Quelldatei angehängt und keine neue „Zeilen / Einträge“ in der Queue erzeugt.
Beim zweiten "write-host $Queue;" findet keine Ausgabe eines kompletten Blocks statt.
$Queue.Contains($SuchString) sucht nicht nach dem $SuchString irgendwo innerhalb der Queue?
Die beiden Suchstrings „ORC“ und „PID“ sind nur beispielhaft ausgewählt < machen später keinen Sinn.
$Queue = New-Object System.Collections.Queue
$LogFile = "d:\powershell\hl7.log"
$BlockEnde = "ORC"
$SuchString = "PID"
foreach ($i in Get-Content -Path $LogFile){
$Queue.Enqueue($i)
write-host $Queue #Nur Kontrolle ob Queue sich füllt - Ausgabe siehe unten
if ($Queue.Contains($BlockEnde)) {
if ($Queue.Contains($SuchString)) {
write-host $Queue #leider keine Ausgabe
$Queue.Clear()}
}
pause #wieder eine Kontrolle wird Zeilenweise ausgeführt
}
kommt zu der Ausgabe:
PS
PS D:\Powershell> .\sort6.ps1
MSH|^~\&|MEL
Drücken Sie die Eingabetaste, um den Vorgang fortzusetzen...:
MSH|^~\&|MEL PID|1||7903313686|
Drücken Sie die Eingabetaste, um den Vorgang fortzusetzen...:
MSH|^~\&|MEL PID|1||7903313686| PV1|1||^^^^^^^^2825||||||||||||||||7909260637|
Drücken Sie die Eingabetaste, um den Vorgang fortzusetzen...:
MSH|^~\&|MEL PID|1||7903313686| PV1|1||^^^^^^^^2825||||||||||||||||7909260637| ORC|OK|WKC097U|WKC097U-
Drücken Sie die Eingabetaste, um den Vorgang fortzusetzen...:
MSH|^~\&|MEL PID|1||7903313686| PV1|1||^^^^^^^^2825||||||||||||||||7909260637| ORC|OK|WKC097U|WKC097U- OBR|1|WKC097U|WKC097U-1
Drücken Sie die Eingabetaste, um den Vorgang fortzusetzen...:
MSH|^~\&|MEL PID|1||7903313686| PV1|1||^^^^^^^^2825||||||||||||||||7909260637| ORC|OK|WKC097U|WKC097U- OBR|1|WKC097U|WKC097U-1 OBX|1|S
T|BI-032^Erreg
Drücken Sie die Eingabetaste, um den Vorgang fortzusetzen...:
MSH|^~\&|MEL PID|1||7903313686| PV1|1||^^^^^^^^2825||||||||||||||||7909260637| ORC|OK|WKC097U|WKC097U- OBR|1|WKC097U|WKC097U-1 OBX|1|S
T|BI-032^Erreg OBR|2|WKC097U|WKC097U
Drücken Sie die Eingabetaste, um den Vorgang fortzusetzen...:
MSH|^~\&|MEL PID|1||7903313686| PV1|1||^^^^^^^^2825||||||||||||||||7909260637| ORC|OK|WKC097U|WKC097U- OBR|1|WKC097U|WKC097U-1 OBX|1|S
T|BI-032^Erreg OBR|2|WKC097U|WKC097U OBX|1|ST|BI-685^Staph
Drücken Sie die Eingabetaste, um den Vorgang fortzusetzen...:
MSH|^~\&|MEL PID|1||7903313686| PV1|1||^^^^^^^^2825||||||||||||||||7909260637| ORC|OK|WKC097U|WKC097U- OBR|1|WKC097U|WKC097U-1 OBX|1|S
T|BI-032^Erreg OBR|2|WKC097U|WKC097U OBX|1|ST|BI-685^Staph OBR|3|WKC097U|WKC097U
Drücken Sie die Eingabetaste, um den Vorgang fortzusetzen...:
MSH|^~\&|MEL PID|1||7903313686| PV1|1||^^^^^^^^2825||||||||||||||||7909260637| ORC|OK|WKC097U|WKC097U- OBR|1|WKC097U|WKC097U-1 OBX|1|S
T|BI-032^Erreg OBR|2|WKC097U|WKC097U OBX|1|ST|BI-685^Staph OBR|3|WKC097U|WKC097U OBX|1|ST|BI-PROT1^Bef
Drücken Sie die Eingabetaste, um den Vorgang fortzusetzen...:
MSH|^~\&|MEL PID|1||7903313686| PV1|1||^^^^^^^^2825||||||||||||||||7909260637| ORC|OK|WKC097U|WKC097U- OBR|1|WKC097U|WKC097U-1 OBX|1|S
T|BI-032^Erreg OBR|2|WKC097U|WKC097U OBX|1|ST|BI-685^Staph OBR|3|WKC097U|WKC097U OBX|1|ST|BI-PROT1^Bef NTE|1|L|Kulturelles W
Drücken Sie die Eingabetaste, um den Vorgang fortzusetzen...:
MSH|^~\&|MEL PID|1||7903313686| PV1|1||^^^^^^^^2825||||||||||||||||7909260637| ORC|OK|WKC097U|WKC097U- OBR|1|WKC097U|WKC097U-1 OBX|1|S
T|BI-032^Erreg OBR|2|WKC097U|WKC097U OBX|1|ST|BI-685^Staph OBR|3|WKC097U|WKC097U OBX|1|ST|BI-PROT1^Bef NTE|1|L|Kulturelles W MSH|^~\&|
ME