Das Originaldokument stammt von Dias Rawiro
Grep_-_Handout.pdf 21. Nov. 2005
einzelne inhaltliche Änderungen
aus semantischen Gründen
grep und die Anwendung von regulären AusdrückenGrep ist ein Kommandozeilenprogramm unter Unix/Linux und dient der Textsuche und Filterung in Dateien. Der Begriff steht für General Regular Expression Processor.
Der grep Befehl kann alleine in der Kommandozeile eingesetzt werden um Dateien zu durchsuchen und in Verbindung mit anderen Programm indem das Ergebnis von grep in ein anderes Programm umgelenkt wird.
Von grep gibt es unterschiedliche Versionen die sich in Ihrem Umfang unterscheiden, wir behandeln hier die Basisversion grep GNU.
Mit grep können auch komplexe Suchanfragen durchgeführt werden, diese werden mit Hilfe von Regular Expressions formuliert.
Einfaches Beispiel: grep Simon telefonliste.txt
grep Simon telefonliste.txt
gibt aus:
Simon, Carlo 2861 A 216 Simon, Christine 1593 A 322 Simon, Werner 1796 X D 130
Syntax:
grep [-CVbchilnsvwx] [-Anzahl] [-AB Anzahl] [[-e] Ausdruck |-f Datei] [Datei...]
-i
Groß- und Kleinschreibung werden nicht unterschieden (case-insensitve):
Beispiel: -i martin telefonliste.txt
Was passiert, wenn man nach mit folgendem Befehl nach Martin sucht; "grep martin telefonliste.txt" ? Dann wird nur nach „martin“ gesucht, was zu keinem Ergebnis führt, da nur „Martin“ in der Liste enthalten ist.
-c
Anzeige der Anzahl Zeilen, in denen das Muster gefunden wurde:
Beispiel: grep -ic hoffman telefonliste.txt
-l
Nur Anzeige der Namen der Dateien, in denen das Muster gefunden wurde
Beispiel: grep –il meyer ./public_html
Es gibt noch mehr Syntaxoptionen! Diese sind in den Manual Pages von grep zu finden (man grep)
"|" (Pipe)
Es gibt 2 Anwendungen von Pipe:
Der Befehl lautet:
grep -i wort1 *.doc | grep -i wort2
Beispiel: grep -i martin' telefonliste.txt | grep -i 'Fislake'
Der Befehl lautet:
grep -i -E "(wort1|wort2)" *.doc
Beispiel: grep -i –E '(manfred|wolfgang)' telefonliste.txt
Im Allgemeinen sind Regular Expressions ein mächtiges Schema zur Formulierung komplexer Abfragen für Computerprogramme um spezielle Zeichenketten in einer Menge von Zeichenketten zu finden.
Ein solcher Ausdruck wird aus den Zeichen des Alphabets in Kombination mit sogenannten Metazeichen [ ] ( ) { } ? + * ^ $ \ . gebildet. Die Zeichen des Alphabets stehen für sich selbst.
In Grep unterscheidet man grundsätzlich zwischen basic und extended regular expressions.
Um Regular Expressions in Grep zu nutzen muss der Schalter „-E“ (manchmal auch „-e“) aktiviert werden:
grep –E 'Ausdruck' Datei (Anm.: alternativ zu grep -E ist auf vielen Systemen egrep verfügbar)
Metazeichen:
| Meta | Beschreibung | Beispiel |
|---|---|---|
| . | Findet jedes Zeichen | grep -E 'Schm.' telefonliste.txt |
| | | Oder | grep -E 'Schmidt|Schmiedt' telefonliste.txt |
| [abc] | Findet a,b oder c | grep -E '[xz]' telefonliste.txt |
| [a-z] | Findet einmal alle Zeichen von a bis z | grep -E '[w-z]' telefonliste.txt |
| () | Gruppierung | grep -i -E "(wort1|wort2)" *.doc |
| \ | Folgendes Metazeichen wird als Literal interpretiert | grep -E '/?' basic.txt |
| ^ | Zeilenanfang | grep -E '^schlau' basic.txt |
| $ | Zeilenende | grep -E 'schlau$' basic.txt |
Quantifizierer (Wiederholungsfaktoren): Metazeichen zur Wiederholung
| Meta | Beschreibung |
|---|---|
| * | Der voranstehende Ausdruck darf beliebig oft (auch keinmal) vorkommen. |
| + | Der voranstehende Ausdruck muss mindestens einmal vorkommen, darf aber auch mehrfach vorkommen. |
| ? | Der voranstehende Ausdruck ist optional, er kann einmal vorkommen, muss es aber nicht, d. h. der Ausdruck kommt null- oder einmal vor. |
| {n} | Der voranstehende Ausdruck muss exakt n-mal vorkommen. |
| {min,} | Der voranstehende Ausdruck muss mindestens min-mal vorkommen. |
| {min,max} | Der voranstehende Ausdruck muss mindestens min-mal und darf maximal max-mal vorkommen. |
Findet alle Zeilen die eine gültige E-Mail Adresse nach dem Schema name@domain.tld enthalten.
grep -E '([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5})' emailliste.txt
Findet (alle) Relativ-Sätze im englischen Text.
grep -E "the .* (who|that)" english.txt
grep [-CVbchilnsvwx] [-Anzahl] [-AB Anzahl] [[-e] Ausdruck |-f Datei] [Datei...] Magloire, Alain et al. 2000-05-31 grep - searching for a pattern, v2.4.2
http://www.sunsite.ualberta.ca/Documentation/Gnu/grep-2.4.2/grep.html
(Stand: 17.11.2005)
Holljen, Frederik v1.01 3 May 1999 Basic Console Commands
http://www.justlinux.com/nhf/Shells/Basic_Console_Commands.html#grep
(Stand: 17.11.2005)
How to use the most popular command in Unix – Grep
http://www.codecoffee.com/tipsforlinux/articles/25.html
(Stand: 17.11.2005)
Robinson, Stuart 21 May 1998 GREP FOR LINGUISTS
http://arts.anu.edu.au/linguistics/misc/comp_resources/grep.html
(Stand: 17.11.2005)
Wikipedia Grep
http://de.wikipedia.org/wiki/Grep
(Stand: 17.11.2005)
Wikipedia Regulärer Ausdruck
http://de.wikipedia.org/wiki/Regul%C3%A4rer_Ausdruck
(Stand: 17.11.2005)
grep Maunal Page
http://linux.die.net/man/1/grep
(Stand: 27.05.2010)