Looking for grep Keywords? Try Ask4Keywords

grepErste Schritte mit grep


Bemerkungen

grep druckt Zeilen, die eine Übereinstimmung für ein Muster in Dateien enthalten.

grep kann reguläre Ausdrücke verwenden und bietet mehrere Optionen zur Verbesserung der Ergebnisqualität.

Verweise

Versionen

POSIX grep

Ausführung Veröffentlichungsdatum
POSIX.2 1992-01-01
IEEE Std 1003.1-2001 2001-12-06
IEEE Std 1003.1, Ausgabe 2004 2004-01-01
IEEE Std 1003.1, Ausgabe 2013 2013-04-19
IEEE Std 1003.1, 2016 Ausgabe 2016-09-30

Illumos / OpenSolaris grep

Ausführung Veröffentlichungsdatum
2005-06-14 2005-06-14
2005-09-06 2005-09-06
2012-03-30 2012-03-30
2012-09-17 2012-09-17
2013-05-14 2013-05-14

GNU grep

Ausführung Veröffentlichungsdatum
2,0 1996-10-01
2.2 1998-04-27
2.3 1999-02-14
2.4.1 2000-03-01
2.4.2 2000-03-09
2.4 1999-12-03
2.5.1 2004-10-29
2.5.1a 2004-11-19
2.5.3 2007-08-02
2.5.4 2009-02-09
2,5 2002-03-13
2.6.1 2010-03-25
2.6.2 2010-03-29
2.6.3 2010-04-02
2.6 2010-03-23
2,7 2010-09-20
2.8 2011-05-13
2,9 2011-06-21
2.10 2011-11-16
2.11 2012-03-02
2.12 2012-04-23
2.13 2012-07-04
2.14 2012-08-20
2.15 2013-10-26
2.16 2014-01-01
2.17 2014-02-17
2.18 2014-02-20
2.19 2014-05-22
2,20 2014-06-03
2.21 2014-11-23
2,22 2015-11-01
2.23 2016-02-04
2.24 2016-03-10
2,25 2016-04-21
2.26 2016-10-02
2.27 2016-12-06
2,28 2017-02-06

BSD grep / FreeGrep

Ausführung Veröffentlichungsdatum
OpenBSD 3.0 2001-12-01
OpenBSD 3.4 2003-11-01
OpenBSD 3.5 2004-05-01
OpenBSD 3.6 2004-11-01
OpenBSD 3.7 2005-05-19
OpenBSD 3.8 2005-11-01
OpenBSD 3.9 2006-05-01
OpenBSD 4.0 2006-11-01
OpenBSD 4.1 2007-05-01
OpenBSD 4.3 2008-05-01
OpenBSD 4.8 2010-11-01
OpenBSD 5.0 2011-11-01
OpenBSD 5.3 2013-05-01
OpenBSD 5.7 2015-05-01
OpenBSD 5.8 2015-10-18
OpenBSD 5.9 2016-03-29
NetBSD 2.0 2004-12-09
NetBSD 4.0 2007-12-19
NetBSD 6.0 2012-10-17
NetBSD 7.0 2015-09-25
FreeBSD 9.0 2012-01-02
FreeBSD 10.0 2014-01-16

Grundlegende Verwendung

Den Befehl ausführen:

grep sam someFile.txt
 

Wenn someFile.txt enthält:

fred 14 m foo
sam 68 m bar
christina 83 f baz
bob 22 m qux
Sam 41 m quux
 

Erzeugt diese Ausgabe:

sam 68 m bar
 

Suchen Sie Text innerhalb eines bestimmten Verzeichnisses rekursiv

Verwenden von GNU grep

grep -r 'pattern' <directory path>
 

Um auch Zeilennummern von Übereinstimmungen -n Option -n

grep -rn 'pattern' <directory path>
 

Nur Dateien mit bestimmten Glob- Mustern suchen

grep --include='*.txt' -r 'pattern' <directory path>
 

Dateimuster oder Verzeichnisse ausschließen

grep -R --exclude=*.log 'pattern' <directory path>
grep -R --exclude={*.log,*.class} 'pattern' <directory path>

grep -R --exclude-dir=tmp 'pattern' <directory path>
grep -R --exclude-dir={tmp,lib} 'pattern' <directory path>
 

Hinweise und andere nützliche Optionen

  • <directory path> kann übersprungen werden, wenn im aktuellen Verzeichnis gesucht wird
  • Die Option -R folgt allen symbolischen Links, im Gegensatz zu -r das symbolischen Links nur dann folgt, wenn sie sich in der Befehlszeile befinden
  • -l um nur übereinstimmende Dateien aufzulisten
  • -h um das Dateinamen-Präfix zu unterdrücken
  • --color=auto , um übereinstimmende Muster hervorzuheben
  • -m <num> , um die maximale Anzahl von Übereinstimmungen für jede Dateieingabe anzugeben

POSIX-Problemumgehung für die rekursive Suche

find <directory path> -type f -exec grep -l 'pattern' {} +
 
  • Optionen wie -n , -l usw. können nach Bedarf verwendet werden
  • Wenn {} + nicht unterstützt wird, verwenden Sie {} \; stattdessen
  • Weitere Informationen zum find finden Sie in der Dokumentation zur find wie das Einschließen / Ausschließen von Dateitypen, Verzeichnissen usw.

Grep-Kontextsteuerung

Gegeben ein Datei-Beispiel namens movieslist.

Troy
Gladiator
Robin Hood
King Arthur
BraveHeart
The Last Samurai
 

Normaler Grep kehrt zurück

grep "Gladiator" movieslist
Gladiator
 

Verwenden Sie nun grep, um die Zeilen über oder unter der Datei zu drucken.

So drucken Sie die untere Zeile

grep -A 1 Gladiator movieslist 
Gladiator
Robin Hood
 

So drucken Sie die obige Zeile

grep -B 1 Gladiator movieslist 
Troy
Gladiator
 

Beides drucken

grep -C 1 Gladiator movieslist 
Troy
Gladiator
Robin Hood
 

Fall ignorieren

Gegeben ein sample :

hello
Hello
HELLO_there
 

Ein normaler grep für "Hallo" gibt zurück:

$ grep "hello" sample 
hello
 

Mit -i können Sie Groß- und Kleinschreibung ignorieren und jedes "Hallo" abgleichen:

$ grep -i "hello" sample
hello
Hello
HELLO_there
 

Stimmen Sie ganze Wörter ab

Gegeben ein sample :

hello world
ahello here
hello_there
 

Ein normaler grep für "Hallo" gibt zurück:

$ grep hello sample 
hello world
ahello here
hello_there
 

Mit -w können Sie die Zeilen auswählen, die Übereinstimmungen enthalten, die ganze Wörter bilden:

$ grep -w hello sample 
hello world
 

Druckt nur den übereinstimmenden Teil der Zeilen

echo "Prints only the matching part of the lines" | grep -o "matching"
# prints matching