Nutzen Sie die Kraft dieser grep-Äquivalente unter Windows

Müde von der Verwendung der gleichen alten Suchwerkzeuge auf Ihrem Computer, wie grep? Warum sich damit zufriedengeben? Viele grep-Äquivalente in Windows können Ihnen helfen, genau das zu finden, wonach Sie suchen.

In diesem Tutorial erfahren Sie, wie diese grep-Äquivalente es ermöglichen, Dateien schneller zu durchsuchen und die benötigten Informationen im Handumdrehen zu finden.

Bleiben Sie dran und schließen Sie mächtige Suchwerkzeuge in Ihre Freundschaft ein!

Voraussetzungen

Dieses Tutorial beinhaltet praktische Demonstrationen. Um mitzumachen, stellen Sie sicher, dass Sie Folgendes haben:

  • A Window machine – This tutorial uses Windows 10 PC, but any version of Windows will suffice.
  • PowerShell – In diesem Tutorial wird PowerShell 7.2.8 verwendet.
  • Scoop – In diesem Tutorial wird scoop v0.3.1 verwendet.

Suchen bestimmter Textzeichenfolgen (findstr) in Dateien

Die Fähigkeit, bestimmte Zeichenfolgen (mit bestimmten Mustern), nach denen Sie in einer Datei suchen, sofort zu finden, erleichtert Ihre Arbeit. Aber wie? Wenden Sie sich an das Befehlszeilenprogramm findstr in Windows, mit dem Sie nach bestimmten Textzeichenfolgen in Dateien suchen können.

findstr wird häufig als Äquivalent zu grep in Windows verwendet, da es ähnliche Funktionalitäten wie der Unix-Befehl grep bietet. Welche Vorteile ergeben sich aus der Verwendung von findstr? Ein Beispiel ist, dass es in jedem Windows-Betriebssystem (OS) integriert ist – es ist keine zusätzliche Software erforderlich.

Um bestimmte Zeichenketten in einer Datei zu finden, befolgen Sie diese Schritte:

Erstellen Sie eine Textdatei mit Ihrem bevorzugten Texteditor, benennen Sie sie in notes.txt um und fügen Sie den unten stehenden Inhalt in die Datei ein.

Hello, world. This is an example of a text file.
I am writing some notes in this file.
Here are some keywords to search for: apple banana cherry.

Öffnen Sie nun PowerShell als Administrator und führen Sie den unten stehenden Befehl aus, um Zeichenketten (findstr) gegen das Suchmuster ("apple") in der Datei notes.txt zu finden.

? findstr verfügt über viele Parameter, die zur Anpassung der Suche verwendet werden können. In diesem Tutorial werden jedoch einige der wertvollsten Parameter beim Suchen von Zeichenketten in Dateien erkundet.

findstr "apple" "C:\\myfiles\\notes.txt
Searching text strings with the word apple in it

? Vielleicht suchen Sie nach Zeichenketten in mehreren Dateien. Wenn ja, geben Sie die Dateipfade durch Leerzeichen getrennt an, wie im Beispiel unten: findstr Parameter "Muster" "C:\\Pfad\\zu\\Datei1.txt" "C:\\Pfad\\zu\\Datei2.txt"

Auffinden von Zeichenketten, die einem bestimmten Muster oder Literal entsprechen

Bei der Arbeit mit Konfigurationsdateien ist es wichtig, Zeichenfolgen in einem bestimmten Muster oder wörtlich zu finden, insbesondere beim Debuggen. Glücklicherweise gibt der Parameter /c dem Befehl findstr an, nach wörtlichen Zeichenfolgen zu suchen, die einem angegebenen Muster entsprechen, einschließlich Leerzeichen oder Sonderzeichen.

Das Anhängen des Parameters /c an den Befehl findstr ist in den folgenden, aber nicht darauf beschränkt, Fällen hilfreich:

  • Suchen nach einer bestimmten Phrase oder einer Reihe von Wörtern, die in einer bestimmten Reihenfolge erscheinen.
  • Suchen nach einer Zeichenkette, die Leerzeichen oder Sonderzeichen enthält.

Um zu sehen, wie der Parameter /c in Aktion funktioniert, befolgen Sie diese Schritte:

1. Führen Sie den folgenden Befehl findstr aus, um in der Datei *notes.txt* nach der wörtlichen Zeichenfolge (/c) banana cherry zu suchen.

findstr /c:"banana cherry" "C:\myfiles\notes.txt"

In der Ausgabe unten gibt der Befehl findstr nur die Zeilen zurück, die die exakte Zeichenkette banana cherry mit einem Leerzeichen zwischen den beiden Wörtern enthalten.

Beachten Sie, dass der Parameter /c auf die Groß- und Kleinschreibung achtet. Der Befehl findstr gibt nur die Zeichenkette mit der genau angegebenen Buchstabenhöhe zurück. Wenn eine der Zeichenfolgen in der Datei notes.txt nicht dem angegebenen Muster entspricht, gibt der Befehl findstr eine leere Ausgabe zurück.

Searching for a literal string

2. Fügen Sie anschließend die folgende Zeile zur Datei notes.txt hinzu und speichern Sie die Änderungen.

Zu diesem Zeitpunkt sollten zwei Zeilen in Ihrer notes.txt-Datei mit dem „hello“-String vorhanden sein. Eine in Kleinbuchstaben (hello, world.) und eine andere mit einem Großbuchstaben ‚H‘ (Hello, world.).

hello, world.

3. Führen Sie nun jeden der folgenden Befehle aus, um nach dem Zeichenfolgenliteral hello, world oder Hello, world in der Datei notes.txt zu suchen.

# Alle Kleinbuchstabenmuster
findstr /c:"hello, world" "C:\myfiles\notes.txt"
# Mit großem Buchstaben 'H'
findstr /c:"Hello, world" "C:\myfiles\notes.txt"

Beachten Sie unten, dass Sie unabhängig davon, ob zwei Zeilen den String „hello, world“ in der Datei notes.txt enthalten, nur eine Zeile mit der Zeichenfolge erhalten.

Der Parameter /c teilt dem Befehl findstr mit, Zeilen zu drucken, die die Zeichenfolge „hello, world“ mit entweder Klein- oder Großbuchstaben ‚H‘ enthalten.

Searching for the ‘hello, world’ literal string with the lowercase ‘h’

4. Führen Sie schließlich den Befehl findstr unten aus, um nach Zeichenfolgen zu suchen, die das Muster hello in der Datei notes.txt enthalten, wobei die Groß-/Kleinschreibung ignoriert wird (/i).

Die Groß-/Kleinschreibungssuche funktioniert gut, wenn Sie bereits die tatsächliche Groß-/Kleinschreibung der gesuchten Zeichenfolge kennen. Wenn Sie jedoch alle Zeilen von Zeichenfolgen sehen möchten, die einem Muster unabhängig von der Groß-/Kleinschreibung entsprechen, erledigt der Parameter /i das.

findstr /i "hello" "C:\myfiles\notes.txt"
Searching strings while Ignoring the letter case

Auffinden bestimmter Zeichenfolgen in Dateien und Verzeichnissen

Neben der Suche nach bestimmten Zeichenfolgen in Dateien ermöglicht der Befehl findstr die Suche nach übereinstimmenden Zeichenfolgen in Dateien, Verzeichnissen und Unterverzeichnissen.

Angenommen, Sie möchten alle Dateien in einem Verzeichnis finden, die ein bestimmtes Wort in ihrem Inhalt enthalten. Lassen Sie daher den /s-Parameter die Drecksarbeit erledigen.

Führen Sie den unten stehenden Befehl aus, um (/s) im aktuellen Verzeichnis und dessen Unterverzeichnissen (/s) nach allen Dateien (*.*) zu suchen, die die Zeichenkette system enthalten, wobei die Groß- und Kleinschreibung ignoriert wird (-i)

Beachten Sie, dass dieser Befehl nur nach Dateien sucht, die die Zeichenkette system als ganzes Wort enthalten, nicht nach solchen, die Teil größerer Wörter sind, wie systematisch oder systematisieren.

findstr /s /i system *.*

Die unten stehende Ausgabe zeigt eine Liste von Dateinamen, jeweils einer pro Zeile, mit dem Namen jeder Datei, die die Zeichenkette „system“ enthält.

Finding specified strings within files, directories, and subdirectories

Durchsuchen von Zeichenketten mit dem Select-String-Cmdlet

Bisher haben Sie gesehen, dass der findstr-Befehl hervorragend zum Finden von Zeichenketten geeignet ist, aber das Select-String-Cmdlet sollte nicht außer Acht gelassen werden. Dieses Cmdlet ist das Äquivalent zu grep in Windows und ermöglicht es Ihnen, nach bestimmten Textmustern in Dateien und Zeichenketten zu suchen.

Das Select-String-Cmdlet ist auf Effizienz ausgelegt, ermöglicht es Ihnen, schnell durch große Mengen von Text zu suchen, und unterstützt reguläre Ausdrücke (Regex). Dieses Cmdlet ermöglicht es Ihnen wiederum, nach noch komplexeren Mustern als findstr zu suchen.

Um zu sehen, wie das Select-String-Cmdlet funktioniert, befolgen Sie diese Schritte:

1. Öffnen Sie zuerst die Datei notes.txt, fügen Sie die folgenden Zeilen hinzu und speichern Sie die Änderungen.

Das Hinzufügen dieser Zeilen ist eine Vorbereitung darauf, wie das Select-String-Cmdlet die Groß- und Kleinschreibung in den folgenden Schritten behandelt.

Apple
APPLE
ApplE

2. Führen Sie dann den folgenden Befehl aus, um nach dem String apple in der Datei notes.txt zu suchen.

Select-String -Pattern "apple" -Path "C:\myfiles\notes.txt"

Unten sind mehrere Zeilen, die den String ‚apple‘ enthalten, jedoch in verschiedenen Groß- und Kleinschreibungen, da das Select-String-Cmdlet nicht zwischen Groß- und Kleinschreibung unterscheidet. Aber das Gute ist, dass Sie die übereinstimmenden Zeichenfolgen leicht erkennen und überprüfen können, da sie hervorgehoben sind.

Searching for a string in a text file

? Vielleicht möchten Sie einfache Zeichenfolgenübereinstimmung anstelle von Regex-Übereinstimmung verwenden. Wenn ja, fügen Sie den Parameter -SimpleMatch wie unten gezeigt hinzu und machen Sie sich nie wieder Gedanken über die Regex-Syntax und Sonderzeichen. Select-String 'APPLE' "C:\\myfiles\\notes.txt" -SimpleMatch

3. Führen Sie nun den folgenden Befehl aus, um nach APPLE in der Datei notes.txt zu suchen, wobei die Groß- und Kleinschreibung aktiviert ist (-CaseSensitive). Der Parameter -CaseSensitive ist nützlich für die Suchgenauigkeit.

Select-String -Pattern 'APPLE' -Path "C:\myfiles\notes.txt" -CaseSensitive

Wie Sie unten sehen können, wurde nur eine Übereinstimmung gefunden, die genau der Buchstabengroß- und -kleinschreibung entspricht, die Sie angegeben haben (APPLE).

Searching for a string with case sensitivity enabled

4. Führen Sie abschließend den folgenden Befehl aus, um mit Regex nach dem Muster '\?' (ein Fragezeichen) in allen Textdateien (*.txt) im Verzeichnis $PSHOME\en-US zu suchen. Mit Regex können Sie nach komplexeren Mustern suchen.

Select-String -Path "$PSHOME\en-US\*.txt" -Pattern '\?’

Wenn der Inhalt einer Datei ein Fragezeichen enthält, gibt der Befehl den vollständigen Pfad der Datei in der Konsole aus.

Searching for a string (a question mark) in files using regex

Verwenden von ripgrep (rg) als Grep-Äquivalent unter Windows

Rg ist ein Open-Source-Befehlszeilen-Dienstprogramm, das dazu dient, Dateien schnell mithilfe von Regex-Patterns zu durchsuchen. Wie andere Befehlszeilen-Dienstprogramme bietet rg viele Optionen und Funktionen zur Anpassung Ihrer Suchanfragen.

Aber im Gegensatz zu findstr und dem Befehl Select-String ist rg nicht standardmäßig in Ihrem Windows-Betriebssystem installiert.

Um rg als Grep-Äquivalent unter Windows zu verwenden:

1. Führen Sie den folgenden scoop-Befehl aus, um ripgrep auf Ihrem System zu installieren. scoop install ripgrep

scoop install ripgrep
Installing ripgrep on your system

2. Führen Sie anschließend den folgenden rg-Befehl aus, um die installierte Version von rg zu überprüfen.

rg --version

Wie unten gezeigt, wird die Versionsnummer von rg angezeigt. Ab diesem Zeitpunkt können Sie rg-Befehle ausführen, um nach Zeichenketten zu suchen.

Verifying rg is installed

3. Führen Sie den folgenden rg-Befehl aus, um nach der Zeichenkette apple in der Datei notes.txt zu suchen.

rg apple C:\myfiles\notes.txt

Die Ausgabe zeigt alle Zeilen in der Datei notes.txt an, die die Zeichenkette apple enthalten, wie unten gezeigt.

Bemerken Sie, dass die Ausgabe der Ausgabe des Befehls Select-String ähnelt. Statt jedoch die Übereinstimmung hervorzuheben, ändert rg die Farbe der übereinstimmenden Zeichenkette und der Zeilennummer, um sie schnell zu unterscheiden.

Searching for the string ‘apple’ in a text file

4. Führen Sie nun den folgenden Befehl mit Regex aus, um nach Zeichenketten in der Datei notes.txt zu suchen.

Die unten stehende Regex verwendet Wortgrenzen (`\b`) und sagt `rg`, dass es nach Zeilen mit Zeichenketten suchen soll, die mit ’s‘ beginnen und mit ‚e‘ enden (`s\w+e`).

rg "\bs\w+e\b" "C:\myfiles\notes.txt"
Search for strings using regex

Filtern von Suchanfragen nach bestimmten Dateitypen

Vielleicht ist Ihnen das Verzeichnis, in dem sich die gesuchte Datei befindet, wichtig, aber nicht der Dateiname. In solchen Fällen kann die Suche nach dem Inhalt der Datei und gleichzeitiges Filtern der Suche nach Dateityp Ihre beste Option sein.

Das Filtern der Suche nach bestimmten Dateitypen kann nützlich sein, wenn Sie nur bestimmte Dateitypen durchsuchen möchten. Oder wenn Sie bestimmte Dateitypen von der Suche ausschließen möchten.

Um die Suche auf bestimmte Dateitypen zu filtern, verwendet die Option --type folgenden Trick:

1. Führen Sie den folgenden rg-Befehl aus, um die Zeichenkette apple in allen Textdateien (--type txt) im Verzeichnis C:\\myfiles zu suchen.

Die Option --type nimmt einen Dateityp als Argument an, der dem Befehl rg mitteilt, nur Dateien zu durchsuchen, die dem angegebenen Dateityp entsprechen.

rg "apple" "C:\myfiles" --type txt

Die Ausgabe unten zeigt die Zeile mit der Zeichenkette ‚apple‚ und den zugehörigen Dateinamen (notes.txt).

Filtering the search to specific file types

2. Erstellen Sie als Nächstes eine XML-Datei namens notes.xml und füllen Sie den untenstehenden Code aus. Diese XML-Datei dient lediglich als Vorbereitung, um zu zeigen, wie Platzhalter-Suchen funktionieren.

<?xml version="1.0" encoding="UTF-8"?>
<fruitBasket>
  <fruit id="1">
    <fruitName>Apple</fruitName>
  </fruit>     
</fruitBasket>

3. Führen Sie nun den folgenden Befehl aus, um nach dem String apple in allen (*.) zu suchen. Dieser Befehl sucht nur nach txt und xml Dateien, wie angegeben (-g).

rg "apple" "C:\myfiles" -g '*.{txt,xml}

Nach Voreinstellung ist rg Groß- und Kleinschreibungssensitiv. Als Ergebnis wird nur die Zeile angezeigt, die den genauen String ‚apple‘ enthält, und die zugehörige Datei.

Filtering searches by a broader range of file types

4. Führen Sie abschließend den folgenden Befehl aus, wie Sie es in Schritt drei getan haben, um nach dem String apple in allen Dateien (*.) zu suchen, die eine txt oder xml Erweiterung haben. Aber dieses Mal fügen Sie die Option -i hinzu, die rg mitteilt, auf die Buchstaben zu verzichten.

rg "apple" "C:\myfiles" -g '*.{txt,xml}-i
Filtering searches by a broader range of file types ignoring letter cases

Schlussfolgerung

In diesem Tutorial haben Sie viele Grep-Äquivalente in Windows gelernt, um Strings wörtlich und mittels Regexes zu durchsuchen. Sie haben die Kraft dieser Grep-Äquivalente mit einer Vielzahl von Optionen und Parametern freigeschaltet, um die Suche anzupassen und nach bestimmten Dateitypen zu filtern.

Zu diesem Zeitpunkt sollten Sie zuversichtlich sein, Probleme zu debuggen, Probleme zu identifizieren und in großen Textdateisätzen zu suchen.

Warum setzen Sie Ihre neuen Fähigkeiten nicht gleich in die Praxis um, indem Sie mit Regexes üben und Ihre Suchanfragen anpassen?

Source:
https://adamtheautomator.com/grep-equivalents-in-windows/