Oft müssen Sie in einer großen Datei nach einer bestimmten Datenzeile suchen, die irgendwo in der Mitte der Datei verborgen ist. Anstatt manuell durch die gesamte Datei zu scrollen, können Sie den grep-Befehl nach Ihnen suchen lassen. Das Befehlszeilenformat für den Befehl grep lautet:
# grep [options] pattern [file]
Der Befehl grep durchsucht entweder die Eingabe oder die angegebene Datei nach Zeilen, die Zeichen enthalten, die dem angegebenen Muster entsprechen. Die Ausgabe von grep sind die Zeilen, die das übereinstimmende Muster enthalten. Aufgrund der Popularität des Befehls grep hat er im Laufe seiner Lebensdauer viele Entwicklungsänderungen erfahren. Dem grep-Befehl wurden viele Funktionen hinzugefügt. Wenn Sie sich die Manpages für den grep-Befehl ansehen, werden Sie sehen, wie vielseitig er ist.
Wenn Sie die Suche umkehren möchten (Ausgabezeilen, die nicht mit dem Muster übereinstimmen), verwenden Sie den Parameter -v:
$ grep -v t file1 one four five $
Wenn Sie die Zeilennummern finden müssen, in denen die übereinstimmenden Muster gefunden werden, verwenden Sie den Parameter -n:
$ grep -n t file1 2:two 3:three $
Wenn Sie nur sehen möchten, wie viele Zeilen das übereinstimmende Muster enthalten, verwenden Sie den Parameter -c:
$ grep -c t file1 2 $
Wenn Sie mehr als ein übereinstimmendes Muster angeben müssen, verwenden Sie den Parameter -e, um jedes einzelne Muster anzugeben:
$ grep -e t -e f file1 two three four five $
grep-Befehlsbeispiele
1. So interpretieren Sie PATTERN als erweiterten regulären Ausdruck:
# grep --extended-regexp PATTERN # grep -E PATTERN
2. So interpretieren Sie PATTERN als eine Liste fester Zeichenfolgen:
# grep -F PATTERN # grep --fixed-strings PATTERN
3. So interpretieren Sie PATTERN als einfachen regulären Ausdruck:
# grep -G PATTERN # grep --basic-regexp PATTERN
4. So interpretieren Sie PATTERN als regulären Perl-Ausdruck:
# grep -P PATTERN # grep --perl-regexp PATTERN
5. So verwenden Sie PATTERN als Muster:
# grep -e PATTERN, # grep --regexp=PATTERN
6. Um Muster aus DATEI zu erhalten, eines pro Zeile:
# grep -f FILE, --file=FILE
7. Um Unterscheidungen zwischen Groß- und Kleinschreibung sowohl im PATTERN als auch in den Eingabedateien zu ignorieren:
# grep -i PATTERN # grep --ignore-case PATTERN
8. So kehren Sie den Sinn der Übereinstimmung um, um nicht übereinstimmende Zeilen auszuwählen:
# grep -v PATTERN # grep --invert-match PATTERN
9. So wählen Sie nur die Zeilen aus, die Übereinstimmungen enthalten, die ganze Wörter bilden:
# grep -w PATTERN # grep --word-regexp PATTERN
10. So wählen Sie nur die Übereinstimmungen aus, die genau mit der gesamten Zeile übereinstimmen:
# grep -x PATTERN # grep --line-regexp PATTERN
11. Um den Fall zu ignorieren:
# grep -y PATTERN
12. Um die normale Ausgabe zu unterdrücken; geben Sie stattdessen eine Anzahl übereinstimmender Zeilen aus:
# grep -c PATTERN # grep --count PATTERN
13. Zur Anzeige in Farbe:
# grep --color PATTERN
14. Um die normale Ausgabe zu unterdrücken; geben Sie stattdessen den Namen jeder Eingabedatei aus, von out wird nicht erwartet:
# grep -L # grep --files-without-match
15. Um die normale Ausgabe zu unterdrücken; geben Sie stattdessen den Namen jeder Eingabedatei aus, aus der die Ausgabe gedruckt wurde:
# grep -l # grep --files-with-matches
16. Zu beruhigen; nichts in die Standardausgabe schreiben Sofort mit Null-Status beenden, wenn eine Übereinstimmung gefunden wird:
# grep -q # grep --quiet # grep --silent
17. So beenden Sie das Lesen einer Datei nach NUM übereinstimmenden Zeilen:
# grep -m NUM # grep --max-count=NUM
18. So drucken Sie nur die übereinstimmenden (nicht leeren) Teile einer übereinstimmenden Zeile:
# grep -o PATTERN # grep --only-matching PATTERN
19. So unterdrücken Sie Fehlermeldungen über nicht vorhandene oder nicht lesbare Dateien:
# grep -s PATTERN # grep --no-messages PATTERN
20. So drucken Sie den 0-basierten Byte-Offset innerhalb der Eingabedatei vor jeder Ausgabezeile:
# grep -b PATTERN # grep --byte-offset PATTERN
21. So drucken Sie den Dateinamen für jede Übereinstimmung:
# grep -H PATTERN # grep --with-filename PATTERN
22. So unterdrücken Sie das Präfix von Dateinamen bei der Ausgabe:
# grep -h PATTERN # grep --no-filename PATTERN
23. Um Eingaben anzuzeigen, die tatsächlich von der Standardeingabe kommen, als Eingaben, die von der Datei LABEL:
kommen# grep -cd PATTERN | grep --label=mysearch -H PATTERN
24. Um jeder Ausgabezeile die auf 1 basierende Zeilennummer in ihrer Eingabedatei voranzustellen:
# grep -n PATTERN # grep --line-number PATTERN
25. Stellen Sie sicher, dass das erste Zeichen des aktuellen Zeileninhalts auf einem Tabstopp liegt:
# grep -T PATTERN # grep --initial-tab PATTERN
26. So melden Sie Byte-Offsets im Unix-Stil:
# grep -u PATTERN # grep --unix-byte-offsets PATTERN
27. Um ein Null-Byte anstelle des Zeichens auszugeben, das normalerweise einem Dateinamen folgt:
# grep -Z PATTERN # grep --null PATTERN
28. So drucken Sie NUM Zeilen nachgestellten Kontext nach übereinstimmenden Zeilen:
# grep -A NUM PATTERN # grep --after-context=NUM PATTERN
29. So drucken Sie NUM Zeilen führenden Kontexts vor übereinstimmenden Zeilen:
# grep -B NUM PATTERN # grep --before-context=NUM PATTERN
30. Um NUM Zeilen Ausgabekontext zu drucken:
# grep -C NUM PATTERN # grep --context=NUM PATTERN
31. So verarbeiten Sie eine Binärdatei, als wäre sie Text:
# grep -a PATTERN /tmp/bin # grep -text PATTERN /tmp/bin
32. Anzunehmen, dass die Datei vom Typ TYPE:
ist# grep --binary-files=TYPE PATTERN
33. Wenn eine Eingabedatei ein Gerät, FIFO oder Socket ist, verwenden Sie ACTION, um sie zu verarbeiten:
# grep -D ACTION PATTERN # grep --devices=ACTION PATTERN
34. Wenn eine Eingabedatei ein Verzeichnis ist, verwenden Sie ACTION, um sie zu verarbeiten:
# grep -d ACTION PATTERN # grep --directories=ACTION PATTERN
35. So überspringen Sie Dateien, deren Basisname mit GLOB übereinstimmt:
# grep --exclude=GLOB PATTERN
36. Zum Überspringen von Dateien, deren Basisname mit einem der aus FILE gelesenen Dateinamen-Globs übereinstimmt:
# grep --exclude-from=FILE PATTERN
37. So schließen Sie Verzeichnisse, die mit dem Muster DIR übereinstimmen, von rekursiven Suchen aus:
# grep --exclude-dir=DIR PATTERN
38. So verarbeiten Sie eine Binärdatei, als ob sie keine übereinstimmenden Daten enthalten würde:
# grep -I PATTERN
39. Um nur Dateien zu suchen, deren Basisname mit GLOB übereinstimmt:
# grep --include=GLOB
40. Um alle Dateien unter jedem Verzeichnis rekursiv zu lesen:
# grep -r PATTERN # grep -R PATTERN
41. So verwenden Sie die Zeilenpufferung für die Ausgabe:
# grep --line-buffered PATTERN
42. Verwenden Sie nach Möglichkeit den mmap-Systemaufruf zum Lesen von Eingaben anstelle des standardmäßigen read:
# grep --mmap PATTERN
43. Um die Datei(en) als binär zu behandeln:
# grep -U /tmp/file PATTERN # grep --binary /tmp/file PATTERN
44. So behandeln Sie die Eingabe als eine Reihe von Zeilen:
# grep -z PATTERN # grep --null-data PATTERN
45. So zeigen Sie die Hilfe an:
# grep -h
46. So drucken Sie die Versionsnummer von grep:
# grep -V