Überprüfen Sie mithilfe von PowerShell, ob eine Datei eine bestimmte Zeichenfolge enthält

John Wachira 20 Juni 2023
  1. Prüfen Sie mit Select-String in PowerShell, ob eine Datei einen bestimmten String enthält
  2. Prüfen Sie mit Get-Content in PowerShell, ob eine Datei einen bestimmten String enthält
  3. Überprüfen Sie, ob eine Datei einen bestimmten String enthält, indem Sie in PowerShell Get-ChildItem und Search-String verwenden
Überprüfen Sie mithilfe von PowerShell, ob eine Datei eine bestimmte Zeichenfolge enthält

In diesem Artikel werden die verschiedenen Methoden erläutert, die wir anwenden können, um eine Zeichenfolge in einer Textdatei mit Windows PowerShell zu finden.

Wir können grep in Unix- und Linux-Umgebungen verwenden, um dies zu erreichen. Das Äquivalent dazu in PowerShell ist ein Cmdlet namens Select-String, das mit regulären Ausdrücken Strings in Dateien findet.

Prüfen Sie mit Select-String in PowerShell, ob eine Datei einen bestimmten String enthält

Nehmen wir an, wir haben eine Demo.txt-Datei auf unserem Rechner. Wie würden wir den String Demonstration in der Datei mit PowerShell finden?

Hier ist das PowerShell-Skript, das Sie verwenden können:

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

Im oben abgebildeten Shell-Skript verwendet Select-String das Muster Demonstration, um in unserer Demo.txt-Datei nach dem String zu suchen. Beachten Sie, dass wir den vollständigen Pfad zu unserer Datei im Parameter Path angegeben haben.

Wenn unsere Datei das angegebene Muster enthält, gibt die Konsole den Dateinamen, die Zeilennummer und die Zeile mit der Zeichenfolge aus. Hier ist die Ausgabe:

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

Aus der obigen Ausgabe haben wir die Datei Demo.txt mit ihrem vollständigen Pfad, die Zeile, die unseren String enthält, Zeile 1, und die Zeile, die den String enthält, d. h. Dies dient nur der Demonstration.

Was ist, wenn wir nur wissen müssen, ob die Datei den String enthält oder nicht?

In einem solchen Fall können Sie ein Skript wie das unten gezeigte verwenden:

$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
}

Im obigen Shell-Skript haben wir einen String namens $Knw definiert und geprüft, ob er ungleich $null ist. Dies ist richtig, da unsere Datei das Muster Demonstration enthält.

Als Ausgabe sollten wir den String Contains erhalten.

Prüfen Sie mit Get-Content in PowerShell, ob eine Datei einen bestimmten String enthält

Get-Content ist ein Cmdlet, das den Inhalt eines angegebenen Pfads zu einer Datei abruft und den Inhalt der Datei liest, um ein Zeichenfolgenobjekt zurückzugeben.

Um Get-Content in unserer Demo.txt-Datei zu verwenden, verwenden wir das unten abgebildete Skript:

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

Im obigen PowerShell-Skript ruft Get-Content den Inhalt unserer Demo.txt-Datei ab und liest sie, die durch den Parameter Path angegeben ist. Anschließend leitet es den Inhalt der Datei an den Befehl Select-String weiter, der den Parameter Pattern verwendet, um unseren String Demonstration zu finden.

Dies gibt die Zeile aus, die unseren String enthält.

This purely for demonstration

Wenn wir nur das Vorhandensein 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
}

Da unsere Datei den angegebenen String enthält, sollten wir als Ausgabe den Contains String erhalten.

Überprüfen Sie, ob eine Datei einen bestimmten String enthält, indem Sie in PowerShell Get-ChildItem und Search-String verwenden

Wie würden wir in einem Szenario vorgehen, in dem wir einen Pool von über fünfzig Textdateien haben und in allen Dateien nach einer Zeichenfolge suchen möchten?

In einem solchen Szenario verwenden wir das Cmdlet Get-ChildItem und Search-String. Das Cmdlet Get-ChildItem findet eine oder mehrere Dateien basierend auf unseren Suchkriterien.

Schauen wir uns ein Beispiel an.

Angenommen, unser Ordner Demo enthält über fünfzig Textdateien, wie suchen wir in diesen Dateien nach der Zeichenfolge Demonstration?

Hier ist das Skript, das wir verwenden werden:

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

Das obige Skript sucht rekursiv nach dem String Demonstration im angegebenen Path-Parameter. Die Konsole gibt die Dateinamen aus, die unseren String enthalten, die Zeilennummern und die Zeilen, die den String enthalten.

Hier ist unsere 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

Hier hast du es.

Kurz gesagt, die Befehle Get-ChildItem, Get-Content und Search-String sind praktisch, wenn wir mit Windows PowerShell eine bestimmte Dateizeichenfolge finden möchten. Select-String ist das Äquivalent zu grep in Unix und findstr in Windows.

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