Überprüfen Sie mithilfe von PowerShell, ob eine Datei eine bestimmte Zeichenfolge enthält
-
Prüfen Sie mit
Select-String
in PowerShell, ob eine Datei einen bestimmten String enthält -
Prüfen Sie mit
Get-Content
in PowerShell, ob eine Datei einen bestimmten String enthält -
Überprüfen Sie, ob eine Datei einen bestimmten String enthält, indem Sie in PowerShell
Get-ChildItem
undSearch-String
verwenden
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 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.
LinkedInVerwandter Artikel - PowerShell String
- Überprüfen Sie, ob ein String in PowerShell nicht NULL oder LEER ist
- Überprüfen Sie, ob eine Zeichenfolge in PowerShell leer ist
- Auswählen mehrerer Muster in einer Zeichenfolge mithilfe von PowerShell
- Entfernen Sie Leerzeichen aus einer Variablen mit PowerShell
- Ersetzen von Zeichenfolgen in PowerShell
- Extrahieren einer Teilzeichenfolge in PowerShell