GNU/Linux >> LINUX-Kenntnisse >  >> Linux

15 Praktische Grep-Befehlsbeispiele in Linux / UNIX


Foto mit freundlicher Genehmigung von Alexôme

Sie sollten den Linux-Befehl grep in den Griff bekommen.

Dies ist Teil der laufenden Serie mit 15 Beispielen, in der 15 detaillierte Beispiele für einen bestimmten Befehl oder eine bestimmte Funktionalität bereitgestellt werden. Zuvor haben wir 15 praktische Beispiele für den Linux-Befehl find, den Linux-Befehlszeilenverlauf und den mysqladmin-Befehl besprochen.


In diesem Artikel lassen Sie uns 15 praktische Beispiele für grep-Befehle unter Linux betrachten, die sowohl für Neulinge als auch für Experten sehr nützlich sein werden.


Erstellen Sie zuerst die folgende demo_file, die in den folgenden Beispielen verwendet wird, um den grep-Befehl zu demonstrieren.

$ cat demo_file
THIS LINE IS THE 1ST UPPER CASE LINE IN THIS FILE.
this line is the 1st lower case line in this file.
This Line Has All Its First Character Of The Word With Upper Case.

Two lines above this line is empty.
And this is the last line.

1. Suche nach der angegebenen Zeichenfolge in einer einzelnen Datei

Die grundlegende Verwendung des Befehls grep besteht darin, wie unten gezeigt nach einer bestimmten Zeichenfolge in der angegebenen Datei zu suchen.

Syntax:
grep "literal_string" filename

$ grep "this" demo_file
this line is the 1st lower case line in this file.
Two lines above this line is empty.
And this is the last line.

2. Suche nach der angegebenen Zeichenfolge in mehreren Dateien.

Syntax:
grep "string" FILE_PATTERN


Dies ist auch eine grundlegende Verwendung des grep-Befehls. Für dieses Beispiel kopieren wir die demo_file nach demo_file1. Die grep-Ausgabe enthält auch den Dateinamen vor der Zeile, die mit dem spezifischen Muster übereinstimmt, wie unten gezeigt. Wenn die Linux-Shell das Metazeichen sieht, führt sie die Erweiterung durch und gibt alle Dateien als Eingabe an grep.

$ cp demo_file demo_file1

$ grep "this" demo_*
demo_file:this line is the 1st lower case line in this file.
demo_file:Two lines above this line is empty.
demo_file:And this is the last line.
demo_file1:this line is the 1st lower case line in this file.
demo_file1:Two lines above this line is empty.
demo_file1:And this is the last line.

3. Suche ohne Berücksichtigung der Groß-/Kleinschreibung mit grep -i

Syntax:
grep -i "string" FILE


Dies ist auch eine grundlegende Verwendung von grep. Dies sucht unempfindlich nach der angegebenen Zeichenkette/Muster-Groß-/Kleinschreibung. Daher passt es alle Wörter wie „the“, „THE“ und „The“ ohne Berücksichtigung der Groß- und Kleinschreibung an, wie unten gezeigt.

$ grep -i "the" demo_file
THIS LINE IS THE 1ST UPPER CASE LINE IN THIS FILE.
this line is the 1st lower case line in this file.
This Line Has All Its First Character Of The Word With Upper Case.
And this is the last line.

4. Übereinstimmung mit regulären Ausdrücken in Dateien

Syntax:
grep "REGEX" filename


Dies ist eine sehr mächtige Funktion, wenn Sie reguläre Ausdrücke effektiv verwenden können. Im folgenden Beispiel wird nach allen Mustern gesucht, die mit „Linien“ beginnen und mit „leer“ mit irgendetwas dazwischen enden. d.h. „Zeilen[irgendwas dazwischen]leer“ in der demo_file suchen.

$ grep "lines.*empty" demo_file
Two lines above this line is empty.

Aus der Dokumentation von grep:Auf einen regulären Ausdruck kann einer von mehreren Wiederholungsoperatoren folgen:

  • ? Das vorhergehende Element ist optional und wird höchstens einmal zugeordnet.
  • * Das vorhergehende Element wird null oder mehrmals abgeglichen.
  • + Das vorhergehende Element wird einmal oder mehrmals abgeglichen.
  • {n} Das vorhergehende Element wird genau n Mal gefunden.
  • {n,} Das vorhergehende Element wird n oder öfter gefunden.
  • {,m} Das vorhergehende Element wird höchstens m Mal gefunden.
  • {n,m} Das vorhergehende Element wird mindestens n-mal, aber nicht öfter als m-mal gefunden.

5. Suche nach ganzen Wörtern, nicht nach Teilstrings mit grep -w

Wenn Sie nach einem Wort suchen möchten und vermeiden möchten, dass es mit den Teilzeichenfolgen übereinstimmt, verwenden Sie die Option -w. Wenn Sie einfach eine normale Suche durchführen, werden alle Zeilen angezeigt.

Das folgende Beispiel ist das reguläre grep, wo es nach „ist“ sucht. Wenn Sie nach „is“ suchen, werden ohne Option „is“, „his“, „this“ und alles, was die Teilzeichenfolge „is“ enthält, angezeigt.

$ grep -i "is" demo_file
THIS LINE IS THE 1ST UPPER CASE LINE IN THIS FILE.
this line is the 1st lower case line in this file.
This Line Has All Its First Character Of The Word With Upper Case.
Two lines above this line is empty.
And this is the last line.


Das folgende Beispiel ist das WORD grep, wo es nur nach dem Wort „ist“ sucht. Bitte beachten Sie, dass diese Ausgabe die Zeile „This Line Has All Its All Its First Character Of The Word With Upper Case“ nicht enthält, obwohl „is“ in „This“ enthalten ist, da im Folgenden nur nach dem Wort „is“ gesucht wird “ und nicht für „dies“.

$ grep -iw "is" demo_file
THIS LINE IS THE 1ST UPPER CASE LINE IN THIS FILE.
this line is the 1st lower case line in this file.
Two lines above this line is empty.
And this is the last line.

6. Anzeigen von Zeilen vor/nach/um das Spiel herum mit grep -A, -B und -C

Wenn Sie eine grep auf eine riesige Datei anwenden, kann es nützlich sein, einige Zeilen nach der Übereinstimmung zu sehen. Sie könnten sich praktisch fühlen, wenn grep Ihnen nicht nur die passenden Zeilen zeigen kann, sondern auch die Zeilen nach/vor/um die Übereinstimmung herum.


Bitte erstellen Sie für dieses Beispiel die folgende demo_text-Datei.

$ cat demo_text
4. Vim Word Navigation

You may want to do several navigation in relation to the words, such as:

 * e - go to the end of the current word.
 * E - go to the end of the current WORD.
 * b - go to the previous (before) word.
 * B - go to the previous (before) WORD.
 * w - go to the next word.
 * W - go to the next WORD.

WORD - WORD consists of a sequence of non-blank characters, separated with white space.
word - word consists of a sequence of letters, digits and underscores.

Example to show the difference between WORD and word

 * 192.168.1.1 - single WORD
 * 192.168.1.1 - seven words.

6.1 N Zeilen nach dem Spiel anzeigen

-A ist die Option, die die angegebenen N Zeilen nach der Übereinstimmung ausgibt, wie unten gezeigt.

Syntax:
grep -A <N> "string" FILENAME


Das folgende Beispiel druckt die übereinstimmende Zeile zusammen mit den 3 Zeilen danach.

$ grep -A 3 -i "example" demo_text
Example to show the difference between WORD and word

* 192.168.1.1 - single WORD
* 192.168.1.1 - seven words.

6.2 N Zeilen vor dem Spiel anzeigen

-B ist die Option, die die angegebenen N Zeilen vor dem Treffer ausgibt.

Syntax:
grep -B <N> "string" FILENAME


Wenn Sie die Option hatten, die N Zeilen nach dem Match anzuzeigen, haben Sie die Option -B für das Gegenteil.

$ grep -B 2 "single WORD" demo_text
Example to show the difference between WORD and word

* 192.168.1.1 - single WORD

6.3 Zeigen Sie N Linien um das Spiel herum

-C ist die Option, die die angegebenen N Zeilen vor dem Treffer ausgibt. In einigen Fällen möchten Sie möglicherweise, dass das Streichholz mit den Linien von beiden Seiten angezeigt wird. Diese Option zeigt N Zeilen auf beiden Seiten (vorher und nachher) des Spiels an.

$ grep -C 2 "Example" demo_text
word - word consists of a sequence of letters, digits and underscores.

Example to show the difference between WORD and word

* 192.168.1.1 - single WORD

7. Hervorheben der Suche mit GREP_OPTIONS

Da grep Zeilen aus der Datei nach dem von Ihnen angegebenen Muster / String ausdruckt, müssen Sie wie folgt vorgehen, wenn Sie möchten, dass hervorgehoben wird, welcher Teil mit der Zeile übereinstimmt.

Wenn Sie den folgenden Export durchführen, erhalten Sie die Hervorhebung der übereinstimmenden Suchen. Im folgenden Beispiel wird all dies hervorgehoben, wenn Sie die Umgebungsvariable GREP_OPTIONS wie unten gezeigt festlegen.

$ export GREP_OPTIONS='--color=auto' GREP_COLOR='100;8'

$ grep this demo_file
this line is the 1st lower case line in this file.
Two lines above this line is empty.
And this is the last line.

8. Rekursive Suche in allen Dateien mit grep -r

Wenn Sie in allen Dateien unter dem aktuellen Verzeichnis und seinem Unterverzeichnis suchen möchten. -r Option ist diejenige, die Sie verwenden müssen. Das folgende Beispiel sucht nach der Zeichenfolge „ramesh“ in allen Dateien im aktuellen Verzeichnis und allen Unterverzeichnissen.

$ grep -r "ramesh" *

9. Invertieren Sie die Übereinstimmung mit grep -v

Sie hatten verschiedene Optionen, um die übereinstimmenden Linien anzuzeigen, die Linien vor der Übereinstimmung anzuzeigen, die Linien nach der Übereinstimmung anzuzeigen und die Übereinstimmung hervorzuheben. Sie möchten also auf jeden Fall auch die Option -v, um die Übereinstimmung umzukehren.

Wenn Sie die Zeilen anzeigen möchten, die nicht mit der angegebenen Zeichenfolge/dem angegebenen Muster übereinstimmen, verwenden Sie die Option -v wie unten gezeigt. Dieses Beispiel zeigt alle Zeilen an, die nicht mit dem Wort „go“ übereinstimmen.

$ grep -v "go" demo_text
4. Vim Word Navigation

You may want to do several navigation in relation to the words, such as:

WORD - WORD consists of a sequence of non-blank characters, separated with white space.
word - word consists of a sequence of letters, digits and underscores.

Example to show the difference between WORD and word

* 192.168.1.1 - single WORD
* 192.168.1.1 - seven words.

10. Zeigt die Linien an, die nicht mit allen gegebenen Mustern übereinstimmen.

Syntax:
grep -v -e "pattern" -e "pattern"

$ cat test-file.txt
a
b
c
d

$ grep -v -e "a" -e "b" -e "c" test-file.txt
d

11. Zählen der Anzahl der Übereinstimmungen mit grep -c

Wenn Sie zählen möchten, wie viele Zeilen mit dem angegebenen Muster/Zeichenfolge übereinstimmen, verwenden Sie die Option -c.

Syntax:
grep -c "pattern" filename

$ grep -c "go" demo_text
6


Wenn Sie möchten, finden Sie heraus, wie viele Linien mit dem Muster übereinstimmen

$ grep -c this demo_file
3


Wenn Sie möchten, finden Sie heraus, wie viele Linien nicht mit dem Muster übereinstimmen

$ grep -v -c this demo_file
4

12. Mit grep -l

nur die Dateinamen anzeigen, die dem angegebenen Muster entsprechen

Wenn Sie möchten, dass grep nur die Dateinamen anzeigt, die dem angegebenen Muster entsprechen, verwenden Sie die Option -l (kleines L).

Wenn Sie grep mehrere Dateien als Eingabe übergeben, zeigt es die Namen der Dateien an, die den Text enthalten, der dem Muster entspricht, was sehr praktisch ist, wenn Sie versuchen, einige Notizen in Ihrer gesamten Verzeichnisstruktur zu finden.

$ grep -l this demo_*
demo_file
demo_file1

13. Nur die übereinstimmende Zeichenfolge anzeigen

Standardmäßig zeigt grep die Zeile, die mit dem angegebenen Muster/String übereinstimmt, aber wenn Sie möchten, dass grep nur die übereinstimmende Zeichenfolge des Musters anzeigt, verwenden Sie die Option -o.

Es ist möglicherweise nicht sehr nützlich, wenn Sie die Zeichenfolge direkt angeben. Aber es wird sehr nützlich, wenn Sie ein Regex-Muster angeben und versuchen zu sehen, wie es übereinstimmt

$ grep -o "is.*line" demo_file
is line is the 1st lower case line
is line
is is the last line

14. Zeigt die Position des Spiels in der Zeile an

Wenn Sie möchten, dass grep die Position anzeigt, an der es mit dem Muster in der Datei übereinstimmt, verwenden Sie die folgenden Optionen als

Syntax:
grep -o -b "pattern" file

$ cat temp-file.txt
12345
12345

$ grep -o -b "3" temp-file.txt
2:3
8:3


Hinweis: Die Ausgabe des obigen grep-Befehls ist nicht die Position in der Zeile, sondern ein Byte-Offset der gesamten Datei.

15. Zeilennummer anzeigen, während die Ausgabe mit grep -n

angezeigt wird

Um die Zeilennummer der Datei mit der übereinstimmenden Zeile anzuzeigen. Es führt eine 1-basierte Zeilennummerierung für jede Datei durch. Verwenden Sie die Option -n, um diese Funktion zu nutzen.

$ grep -n "go" demo_text
5: * e - go to the end of the current word.
6: * E - go to the end of the current WORD.
7: * b - go to the previous (before) word.
8: * B - go to the previous (before) WORD.
9: * w - go to the next word.
10: * W - go to the next WORD.

Zusätzliche Grep-Tutorials

  • 7 Linux-Beispiele für die Operatoren Grep OR, Grep AND, Grep NOT
  • Reguläre Ausdrücke im Grep-Befehl mit 10 Beispielen – Teil I
  • Erweiterte reguläre Ausdrücke im Grep-Befehl mit 10 Beispielen – Teil II
  • Suchen Sie in einer *.bz2-Datei mit bzgrep und in einer *.gz-Datei mit zgrep

Tolle Linux-Artikel

Es folgen einige tolle 15 Beispiele Artikel, die Sie möglicherweise hilfreich finden.

  • Linux Crontab:15 fantastische Cron-Job-Beispiele
  • Mama, ich habe es gefunden! — 15 praktische Beispiele für Linux-Suchbefehle
  • 15 Beispiele zur Beherrschung der Linux-Befehlszeilengeschichte
  • Unix LS-Befehl:15 praktische Beispiele

Linux
  1. cp-Befehl unter Linux:7 praktische Beispiele

  2. Linux-Shutdown-Befehl:5 praktische Beispiele

  3. 5 praktische Beispiele des dd-Befehls unter Linux

  4. UNIX / Linux:10 Netstat-Befehlsbeispiele

  5. 10 praktische Beispiele für Linux-nm-Befehle

5 praktische Beispiele für Tail-Befehle unter Linux

Echo-Befehl unter Linux:7 praktische Beispiele

Grep-Befehl in Linux (mit Beispielen)

Grep-Befehl unter Linux/UNIX

Praktischer Ping-Befehl in Linux-Beispielen

UNIX / Linux:7 praktische Beispiele für PS-Befehle zur Prozessüberwachung