So überprüfen Sie, ob eine Datei einen bestimmten String enthält, indem Sie PowerShell verwenden.

  1. Überprüfen, ob eine Datei eine bestimmte Zeichenfolge mithilfe von Select-String in PowerShell enthält
  2. Überprüfen, ob eine Datei eine bestimmte Zeichenfolge mithilfe von Get-Content in PowerShell enthält
  3. Überprüfen mehrerer Dateien, die eine bestimmte Zeichenfolge enthalten
  4. Fazit
So überprüfen Sie, ob eine Datei einen bestimmten String enthält, indem Sie PowerShell verwenden.

Die Suche nach einer bestimmten Zeichenfolge in einer Textdatei ist eine gängige Aufgabe bei der Arbeit mit Windows PowerShell. Während Unix- und Linux-Umgebungen das zuverlässige grep-Kommando nutzen, bietet PowerShell einen alternativen Ansatz mit den Cmdlets Select-String, Get-Content und Get-ChildItem.

In diesem Artikel werden wir verschiedene Methoden untersuchen, wie man PowerShell verwendet, um eine Zeichenfolge in einer Textdatei zu finden.

Überprüfen, ob eine Datei eine bestimmte Zeichenfolge mithilfe von Select-String in PowerShell enthält

Angenommen, wir haben eine Datei Demo.txt auf unserem Rechner und wir möchten die Zeichenfolge Demonstration darin finden.

Hier ist das PowerShell-Skript, um das zu tun:

Select-String -Path C:\Users\pc\Demo\Demo.txt -Pattern 'Demonstration'

In diesem Skript verwenden wir Select-String mit dem Parameter -Path, um den Speicherort der Datei anzugeben, und den Parameter -Pattern, um die Zeichenfolge zu spezifizieren, nach der wir suchen.

Wenn unsere Datei das angegebene Muster ('Demonstration') enthält, gibt die Konsole den Dateinamen, die Zeilennummer und die Zeile mit der enthaltenen Zeichenfolge aus.

Ausgabe:

C:\Users\pc\Demo\Demo.txt:1:This purely for demonstration

Die obige Ausgabe zeigt die Datei Demo.txt mit ihrem vollständigen Pfad, die Zeile, die unsere Zeichenfolge enthält (Zeile 1), und die Zeile, die die Zeichenfolge selbst enthält (This is purely for demonstration).

Was ist jedoch, wenn wir nur wissen müssen, ob die Datei die Zeichenfolge enthält oder nicht? In einem solchen Fall können wir das Skript wie folgt ändern:

$Knw = Select-String -Path C:\Users\pc\Demo\Demo.txt -Pattern "Demonstration"

if ($Knw -ne $null) {
    echo Contains String
}
else {
    echo Does not Contain String
}

In diesem Skript haben wir eine Variable namens $Knw definiert, die das Ergebnis der gesuchten Zeichenfolge "Demonstration" in der Datei am angegebenen Pfad mit Select-String enthält. Dann überprüfen wir, ob die Variable $Knw ungleich $null ist, was bedeutet, dass ein Treffer in der Datei gefunden wurde.

Wenn ein Treffer gefunden wird, wird "Contains String." ausgegeben. Wenn kein Treffer gefunden wird, wird "Does not Contain String." ausgegeben.

Ausgabe:

Contains String

Da unsere Datei das Muster "Demonstration" enthält, zeigt die Ausgabe Contains String.

Überprüfen, ob eine Datei eine bestimmte Zeichenfolge mithilfe von Get-Content in PowerShell enthält

Get-Content ist ein Cmdlet, das die Inhalte eines angegebenen Pfads zu einer Datei abruft und die Inhalte der Datei liest, um ein Zeichenfolgenobjekt zurückzugeben. Um Get-Content in unserer Datei Demo.txt zu verwenden, verwenden wir das unten dargestellte Skript:

Get-Content -Path C:\Users\pc\Demo\Demo.txt | Select-String -Pattern "Demonstration"

In diesem Skript verwenden wir Get-Content, um die Inhalte unserer Datei Demo.txt, die durch den Parameter -Path angegeben ist, zu lesen und sie an den Select-String-Befehl weiterzuleiten, der den Parameter -Pattern verwendet, um die Zeichenfolge Demonstration zu finden.

Ausgabe:

This purely for demonstration

Wenn wir nur die Anwesenheit der Zeichenfolge bestätigen möchten, können wir das unten gezeigte Skript verwenden:

If (Get-Content C:\Users\pc\Demo\Demo.txt | % { $_ -match "Demonstration" }) {
    echo Contains String
}
else {
    echo Does not Contains String
}

In diesem Skript verwenden wir Get-Content, um die Daten der Datei an dem Ort C:\Users\pc\Demo\Demo.txt zu lesen, und verwenden eine Pipeline (|), um jede Zeile der Datei nacheinander zu verarbeiten. Innerhalb des Blocks %{} überprüfen wir, ob jede Zeile die Zeichenfolge "Demonstration" mithilfe des -match-Operators enthält.

Wenn eine Zeile in der Datei "Demonstration" enthält, wird "Contains String" ausgegeben. Wenn keine Zeile in der Datei "Demonstration" enthält, wird "Does not Contains String" ausgegeben.

Ausgabe:

Contains String

Da unsere Datei die angegebene Zeichenfolge ("Demonstration") enthält, erhalten wir Contains String als Ausgabe.

Überprüfen mehrerer Dateien, die eine bestimmte Zeichenfolge enthalten

Was ist, wenn Sie über fünfzig Textdateien verfügen und in allen nach einer Zeichenfolge suchen möchten? Wir werden zwei Möglichkeiten besprechen, dies zu tun.

Verwendung von Get-ChildItem und Select-String in PowerShell

Wir können die Cmdlets Get-ChildItem und Select-String verwenden. Das Cmdlet Get-ChildItem findet eine oder mehrere Dateien basierend auf unseren Suchkriterien.

Betrachten wir ein Beispiel. Angenommen, unser Ordner Demo enthält über fünfzig Textdateien, können wir die Zeichenfolge Demonstration in allen mit diesem Skript suchen:

Get-ChildItem -Path C:\Users\pc\Demo\ -Recurse | Select-String -Pattern 'Demonstration'

In diesem Skript verwenden wir Get-ChildItem, um Dateien im angegebenen Verzeichnis (-Path) und dessen Unterverzeichnissen (-Recurse) aufzulisten. Der Pipe-Operator (|) übergibt die Liste der Dateien an das Cmdlet Select-String.

Schließlich verwenden wir Select-String, um nach einem bestimmten Muster, 'Demonstration' in jeder Datei zu suchen.

Die Konsole gibt die Dateinamen aus, die unsere Zeichenfolge enthalten, sowie die Zeilennummern und die Zeilen, die die Zeichenfolge enthalten.

Ausgabe:

C:\Users\pc\Demo\Demo.txt:1:This purely for demonstration
C:\Users\pc\Demo\Insert.txt:1:We will use this demonstration for a test trial
C:\Users\pc\Demo\myfile.txt:1:This is a demonstration file for Get-ChildItem

Verwendung von Select-String in PowerShell

Wir können auch nur Select-String verwenden, um die bestimmte Zeichenfolge in mehreren Dateien zu überprüfen.

Select-String -Path C:\Users\pc\Demo\*.txt -Pattern 'Demonstration'

In diesem Skript verwenden wir das Platzhalterzeichen (*) im Parameter -Path, um nach allen Textdateien im Ordner Demo zu suchen. Das Cmdlet Select-String sucht in allen passenden Dateien nach der Zeichenfolge.

Ausgabe:

C:\Users\pc\Demo\Demo.txt:1:This purely for demonstration
C:\Users\pc\Demo\Insert.txt:1:We will use this demonstration for a test trial
C:\Users\pc\Demo\myfile.txt:1:This is a demonstration file for Get-ChildItem

Wie oben wird die Konsole die Dateinamen ausgeben, die unsere Zeichenfolge enthalten, sowie die Zeilennummern und die Zeilen, die die Zeichenfolge enthalten.

Fazit

Windows PowerShell bietet eine Reihe von Werkzeugen, um effektiv nach Zeichenfolgen in Textdateien zu suchen. Ob Sie nun das Cmdlet Select-String, Get-Content oder eine Kombination aus Get-ChildItem und Select-String bevorzugen, Sie können Daten in Ihren Dateien leicht finden und bearbeiten.

Mit diesen Cmdlets werden Sie keine Schwierigkeiten haben, die Informationen zu finden, die Sie benötigen, und die Suche nach Textdateien in PowerShell wird mühelos.

Genießen Sie unsere Tutorials? Abonnieren Sie DelftStack auf YouTube, um uns bei der Erstellung weiterer hochwertiger Videoanleitungen zu unterstützen. Abonnieren
John Wachira avatar John Wachira avatar

John is a Git and PowerShell geek. He uses his expertise in the version control system to help businesses manage their source code. According to him, Shell scripting is the number one choice for automating the management of systems.

LinkedIn

Verwandter Artikel - PowerShell String