Wie bekomme ich Suchtext von PowerShell?
grep
ist ein leistungsstarkes Textsuchprogramm unter Linux, aber es ist nicht unter Windows verfügbar. Obwohl es Ports und Lösungen von Drittanbietern gibt, bietet PowerShell integrierte Äquivalente grep
, die in Ihren Skripts die gleiche Aufgabe erfüllen.
Verwenden von findstr zum Suchen in PowerShell
PowerShell verfügt über mehrere verschiedene Suchprogramme, jedes mit seinen eigenen Stärken. Am einfachsten ist findstr
die native ausführbare Windows-Datei. Dies funktioniert gut, um grep für einfache Suchoperationen auf der Befehlszeile zu ersetzen. Beispielsweise können Sie ihm die Ausgabe übergeben, ls
um nach Übereinstimmungen zu suchen.
ls | findstr "foo"
Sie können auch nach mehreren Wörtern gleichzeitig suchen, Platzhalter verwenden, um Übereinstimmungen zu finden, und ein /R
Flag verwenden, um grundlegende reguläre Ausdrücke zu übergeben.
ls | findstr /R ba[a-z]\.txt
Wenn Sie jedoch explizit mit Leerzeichen suchen möchten, müssen Sie /C:
das Flag verwenden:
ls | findstr /C:"foo"
Wenn Sie an die Linux-Befehlszeile gewöhnt sind und sich keinen neuen Befehl merken möchten, können Sie „grep“ als Alias für einrichten findstr
, wodurch Sie etwas Muskelspeicher sparen.
new-alias grep findstr
Verwenden von Select-String zum Suchen nach grep in PowerShell
Eine weitere native Methode, die von PowerShell angeboten wird, ist das Select-String
Cmdlet, das in vielerlei Hinsicht ähnlich ist, findstr
aber eher ein PowerShell-Cmdlet als eine ausführbare Windows-Datei ist.
Dies bedeutet, dass es in PowerShell-Skripten besser funktioniert und vor allem seine Ausgabe als Objekt zurückgibt, das von PowerShell schön gedruckt werden kann. Es ist auch einfacher in der Befehlszeile zu verwenden, da die PowerShell-Tab-Vervollständigung damit funktioniert.
Es funktioniert auf die gleiche findstr
Weise und kann Platzhalter und reguläre Ausdrücke akzeptieren.
ls | Select-String foo
ls | Select-String -Pattern <regexPattern>
Sie können verwenden Select-String
, um nach Text in Dateien zu suchen, indem -Path
Sie ihm ein Argument übergeben. Sie können es auch mit Eingaben verwenden, die von anderen Cmdlets wie Get-Content
.
Select-String -Path ".\foo.txt"-Pattern ba.*
Wenn Sie es auf der Befehlszeile verwenden möchten, können Sie für den schnellen Zugriff auch den Alias “grep“ verwenden.
remove-alias grep
new-alias grep Select-String
Schreibe einen Kommentar