Powershell - Inhalt von Datei durchsuchen und Text nach Suchergebnis ausgeben
Hallo zusammen,
ich bin gerade am Verzweifeln und komm mit einem kleinen Powershell Script nicht weiter.
Ich habe eine Datei welche einen Text ohne Zeilenumbrüche enthält. In dieser Datei möchte ich nach einem Wort suchen und den folgenden Text bis zu einem bestimmten Zeichen ausgeben.
Anbei ein Beispiel meiner Datei:
Ich möchte jetzt also verschienden Inhalten suchen und möchte folgende Ausgabe erhalten:
Suche: test1
Ausgabe: a; e; g; d;a
Suche: test2
Ausgabe: g;z;t;u;1;2;3;v;a
Ich habe bereits meinen Inhalt meiner Datei in eine Variable geholt. Jetzt habe ich alles Mögliche mit Trim, Substring, IndexOf, SelectString usw. getestet. Jedoch komme ich hier irgendwie nicht weiter.
Hat zufällig jemand eine Idee wie ich das anstellen soll?
Über einen Tipp wäre ich sehr Dankbar.
ich bin gerade am Verzweifeln und komm mit einem kleinen Powershell Script nicht weiter.
Ich habe eine Datei welche einen Text ohne Zeilenumbrüche enthält. In dieser Datei möchte ich nach einem Wort suchen und den folgenden Text bis zu einem bestimmten Zeichen ausgeben.
Anbei ein Beispiel meiner Datei:
blablabla blablabla blablabla test1 a; e; g; d;a blablabla blablabla blablabla test2 g;z;t;u;1;2;3;v;a blablabla blablabla usw...
Ich möchte jetzt also verschienden Inhalten suchen und möchte folgende Ausgabe erhalten:
Suche: test1
Ausgabe: a; e; g; d;a
Suche: test2
Ausgabe: g;z;t;u;1;2;3;v;a
Ich habe bereits meinen Inhalt meiner Datei in eine Variable geholt. Jetzt habe ich alles Mögliche mit Trim, Substring, IndexOf, SelectString usw. getestet. Jedoch komme ich hier irgendwie nicht weiter.
Hat zufällig jemand eine Idee wie ich das anstellen soll?
Über einen Tipp wäre ich sehr Dankbar.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 456916
Url: https://administrator.de/forum/powershell-inhalt-von-datei-durchsuchen-und-text-nach-suchergebnis-ausgeben-456916.html
Ausgedruckt am: 07.04.2025 um 02:04 Uhr
4 Kommentare
Neuester Kommentar

Regular Expressions ist wie immer dein Freund.
$text = Get-Content "C:\test.txt" -raw
$search = Read-Host "Suchbegriff eingeben"
$result = [regex]::Match($text,"(?is)$([regex]::Escape($search))\s+(.*?)\s{2,}")
if($result.Success){
write-host "Ergebnis: $($result.Groups[1].Value)"
}else{
write-host "Nicht gefunden!"
}

Funktioniert hier aber mit deinem Text (getestet)
Hier als Beweis mit Testdaten in PS Skript inkludiert:
Ergebnis:
Ansonsten hast du uns keine exakten Ausgangsdaten der Datei geliefert. P.s. Ich gehe davon aus das da mindestens 2 Leerzeichen oder Tabs nach den gewünschten Daten stehen um eben zwischen zu extrahierenden Daten und dem nächsten Feld zu unterscheiden.
Edit: Korrektur
Hier als Beweis mit Testdaten in PS Skript inkludiert:
$text = @"
blablabla blablabla blablabla test1 a; e; g; d;a blablabla blablabla blablabla test2 g;z;t;u;1;2;3;v;a blablabla blablabla usw...
"@
$search = Read-Host "Suchwort"
$result = [regex]::Match($text,"(?is)$([regex]::Escape($search))\s+(.*?)\s{2,}")
if($result.Success){
write-host "Ergebnis: $($result.Groups[1].Value)"
}else{
write-host "Nicht gefunden!"
}
Ergebnis:
Ansonsten hast du uns keine exakten Ausgangsdaten der Datei geliefert. P.s. Ich gehe davon aus das da mindestens 2 Leerzeichen oder Tabs nach den gewünschten Daten stehen um eben zwischen zu extrahierenden Daten und dem nächsten Feld zu unterscheiden.
Edit: Korrektur