So verwenden Sie den Befehl fgrep, um Textzeichenfolgen in Dateien zu finden
Kurz: In diesem anfängerfreundlichen Leitfaden werden wir einige praktische Beispiele für den Befehl fgrep besprechen. Am Ende dieses Handbuchs werden Benutzer in der Lage sein, Textsuchvorgänge effizient über die Befehlszeilenschnittstelle durchzuführen. :
Die Textsuche ist eine der am häufigsten ausgeführten Operationen. Diese einfache Aufgabe wird jedoch schnell zeitaufwändig, wenn die Benutzer nicht mit den richtigen Tools vertraut sind. Unter Linux gibt es verschiedene Textfilterprogramme wie awk, sed, cut usw.
Unter Linux ist fgrep jedoch das am meisten bevorzugte Dienstprogramm für die einfache Textsuche. In diesem Leitfaden werden wir einige Praxisbeispiele für den Befehl fgrep besprechen, die im täglichen Leben verwendet werden können.
Der Befehl fgrep in Linux fällt in die Familie des grep-Befehls. Es wird jedoch verwendet, um nach dem festen Zeichenfolgenmuster anstelle von regulären Ausdrücken zu suchen. Daher lautet der Name des Befehls fgrep (Fixed GREP).
Die Syntax des Befehls fgrep ähnelt den anderen Befehlen der grep-Familie:
$ fgrep [OPTIONS] PATTERNS [FILES]
Um zu beginnen, erstellen wir eine Nur-Text-Datei mit dem folgenden Inhalt, um ein Beispiel zu verwenden:
$ cat input.txt
Hier können wir sehen, dass die Textdatei mit dem Beispielinhalt fertig ist. Lassen Sie uns nun in den nächsten Beispielen einige gängige Beispiele für den Befehl fgrep besprechen.
1. Wie unterscheidet sich fgrep von den Befehlen grep und egrep?
Wie der Name schon sagt, wird der Befehl fgrep verwendet, um nach den festen String-Mustern zu suchen. Es interpretiert das Muster als feste Zeichenfolge anstelle eines regulären Ausdrucks. Daher führt es den Suchvorgang zeiteffizient aus.
Um den Unterschied zu verstehen, verwenden wir einen Punkt (.) mit dem Befehl grep.
Dieser einfache reguläre Ausdruck entspricht jedem einzelnen Zeichen mit Ausnahme des Zeilenendes:
$ grep ha. input.txt
In der obigen Ausgabe können wir sehen, dass das Zeichen Punkt (.) mit dem Text har, hat und has übereinstimmt.
Lassen Sie uns nun das gleiche Muster mit dem Befehl fgrep verwenden und das Ergebnis beobachten:
$ fgrep ha. input.txt
In der obigen Ausgabe können wir sehen, dass der Befehl das angegebene Muster nicht findet.
Dies geschieht, weil der Befehl fgrep reguläre Ausdrücke nicht erkennt und versucht, nach dem nicht vorhandenen Muster zu suchen – "ha." .
2. So suchen Sie nach einem Muster in einer Datei
Beginnen wir mit dem einfachen Beispiel, in dem wir in einer input.txt Datei nach einem String Professional suchen:
$ fgrep professionals input.txt
Wie wir sehen können, gelingt der Musterabgleich an zwei Stellen und ist rot hervorgehoben.
3. So stellen Sie die Grep-Ausgabefarbe für übereinstimmende Muster ein
Im vorherigen Beispiel haben wir gesehen, dass das übereinstimmende Muster standardmäßig rot hervorgehoben ist. Wir können dieses Verhalten jedoch ändern, indem wir den GREP_COLOR Umgebungsvariablen einen anderen Wert zuweisen.
Weisen wir der Umgebungsvariablen GREP_COLOR den Wert 32 zu, um das übereinstimmende Muster in grüner Farbe hervorzuheben:
$ export GREP_COLOR=32
fgrep professionals input.txt
Bevor Sie nun zum nächsten Beispiel übergehen, heben Sie die Umgebungsvariable GREP_COLOR auf, um das Standardverhalten zu aktivieren:
$ unset GREP_COLOR
4. So suchen Sie nach mehreren Mustern in einer Datei
Manchmal müssen wir einen Musterabgleich für mehrere Zeichenfolgen durchführen. In solchen Fällen können wir die Muster aus der Textdatei anstelle des Befehlszeilenarguments bereitstellen.
Erstellen wir eine Textdatei, die mehrere Muster in einer separaten Zeile enthält:
$ cat pattern.txt
professionals
website
Lassen Sie uns nun diese Datei mit der Option -f für den Abgleich mehrerer Muster verwenden:
$ fgrep -f pattern.txt input.txt
In der obigen Ausgabe können wir sehen, dass der Musterabgleich für die Strings Professionals und die Website erfolgreich ist.
5. So begrenzen Sie die Anzahl der Übereinstimmungen in einer Datei
Standardmäßig führt der Befehl fgrep den Musterabgleich so lange durch, bis die gesamte Datei verarbeitet ist.
Manchmal müssen wir jedoch die Anzahl der Übereinstimmungen begrenzen. In solchen Fällen können wir die Option -m mit dem folgenden Befehl verwenden:
$ fgrep -m 1 professionals input.txt
TecMint was started on 15th August 2012 by technical professionals and all the
In diesem Beispiel stoppt der Befehl fgrep die Dateiverarbeitung, nachdem er mit dem ersten Muster übereinstimmt.
6. So drucken Sie den Dateinamen beim Suchen des Musters
Manchmal müssen wir nur den Namen der Dateien finden, in denen ein bestimmtes Muster vorhanden ist. In solchen Fällen können wir die Option -l des Befehls fgrep verwenden:
$ fgrep -l professionals input.txt
input.txt
Hier können wir sehen, dass der Befehl nur den Dateinamen anstelle der Zeilen mit den übereinstimmenden Mustern ausgibt.
7. Drucken des Dateinamens, wenn der Musterabgleich fehlschlägt
Im vorherigen Beispiel haben wir gesehen, wie der Dateiname gedruckt wird, wenn der Musterabgleich erfolgreich ist. Sehen wir uns nun an, wie Sie den Vorgang auf umgekehrte Weise ausführen.
Versuchen wir, das nicht vorhandene Muster in der Datei zu finden und das Ergebnis zu beobachten:
$ fgrep -L non-existing-word input.txt
input.txt
In diesem Beispiel haben wir die Option -L des Befehls verwendet, der den Dateinamen druckt, wenn der Musterabgleich nicht erfolgreich ist.
8. So unterdrücken Sie Fehlermeldungen
Die Fehlerbehandlung spielt beim Schreiben von Shell-Skripten eine entscheidende Rolle. In einigen unkritischen Szenarien können wir die Fehlermeldungen jedoch getrost ignorieren.
In fgrep können wir die Option -s verwenden, die Fehler im Zusammenhang mit nicht vorhandenen oder unlesbaren Dateien unterdrückt. Um dieses Verhalten besser zu verstehen, versuchen wir, in der nicht vorhandenen Datei nach einem Muster zu suchen:
$ fgrep -s professionals non-existing-file.txt
echo $?
2
In der obigen Ausgabe können wir sehen, dass der Befehl keinen Fehler im Standardfehlerstrom anzeigt. Der Fehler wird jedoch durch den Rückgabewert ungleich Null gemeldet.
Darüber hinaus können wir das gleiche Verhalten auch beobachten, wenn die Datei nicht lesbar ist. Ändern Sie also zunächst die Dateiberechtigung mit dem Befehl chmod:
$ chmod 000 input.txt
ls -l input.txt
Versuchen Sie nun, nach dem Muster zu suchen und das Ergebnis zu beobachten:
$ fgrep -s professionals input.txt
echo $?
9. So schließen Sie teilweise übereinstimmende Zeilen aus
In den vorherigen Beispielen haben wir gesehen, dass der Befehl fgrep eine teilweise Übereinstimmung ausführt. In einigen Fällen müssen wir jedoch die exakte Übereinstimmung für die gesamte Linie durchführen. In solchen Fällen können wir die Option -x des Befehls fgrep verwenden.
$ fgrep -nx "the same site is sometimes hard to find." input.txt
In der obigen Ausgabe erfolgt die exakte Zeilenübereinstimmung bei der Zeilennummer 20.
10. So schließen Sie Dateien bei der rekursiven Suche aus
Manchmal müssen wir bestimmte Dateien überspringen, während wir Suchvorgänge durchführen. In solchen Fällen können wir die Option --exclude des Befehls fgrep verwenden.
Um dies zu verstehen, erstellen Sie zunächst ein Verzeichnis und kopieren Sie einige Beispieldateien in dieses Verzeichnis:
$ mkdir dir-1
cp input.txt dir-1/input.txt
cp input.txt dir-1/input.data
cp input.txt dir-1/input.md
Lassen Sie uns nun in allen Dateien des Verzeichnisses dir-1 mit Ausnahme der ".txt"-Dateien nach dem Muster suchen:
$ fgrep -r --exclude *.txt professionals dir-1
In der obigen Ausgabe können wir sehen, dass der Musterabgleich für Dateien mit den Erweiterungen ".md" und ".data" durchgeführt wurde.
11. So schließen Sie mehrere Dateitypen bei der rekursiven Suche aus
Im vorherigen Beispiel haben wir gesehen, wie Dateien mit bestimmten Erweiterungen ausgeschlossen werden. Der Befehl wird jedoch langwierig, wenn wir Dateien mit mehreren Erweiterungen ausschließen möchten. In solchen Fällen können wir das Ausschlussmuster aus der Datei anstelle des Befehlszeilenarguments bereitstellen:
Erstellen wir also eine Textdatei, die mehrere Ausschlussmuster in einer separaten Zeile enthält:
$ cat skip-pattern.txt
*.txt
*.data
Lassen Sie uns nun diese Datei mit der Option --exclude-from verwenden:
$ fgrep -r --exclude-from skip-pattern.txt professionals dir-1
Hier können wir sehen, dass der Musterabgleich nur für Dateien mit der Erweiterung ".md" durchgeführt wurde.
12. Wie man Dateien einbindet, während man rekursiv sucht
In den vorherigen Beispielen haben wir gesehen, wie Dateien ausgeschlossen werden, während Suchvorgänge rekursiv ausgeführt werden. Sehen wir uns nun an, wie Sie den Vorgang auf umgekehrte Weise ausführen.
Lassen Sie uns die Option --include des Befehls fgrep verwenden, um eine Suche in den Dateien mit der Erweiterung "*.txt" durchzuführen:
$ fgrep -r --include "*.txt" professionals dir-1
In der obigen Ausgabe können wir sehen, dass der Musterabgleich für die Dateien mit den Erweiterungen "*.md" und "*.data" übersprungen wird.
In diesem Artikel haben wir einige nützliche Beispiele für den Befehl fgrep besprochen. Anfänger können diese Beispiele im Alltag nutzen, um die Produktivität bei der Arbeit mit Linux zu verbessern.
Kennen Sie ein anderes bestes Beispiel für den fgrep-Befehl unter Linux? Teilen Sie uns Ihre Meinung in den Kommentaren unten mit. :









