grep dir was

(Last Updated On: 21. September 2007)

Hier soll nur grep „global search for a regular expression and print out matched lines“ und einige Anwendungsmöglichkeiten behandelt werden.
Die Variationen:

  • agrep (Approximate GREP) ist eine besondere Version aus der Familie der grep-Programme, die im Gegensatz zu allen Varianten eine unscharfe (fuzzy) Textstringsuche ermöglicht.
  • egrep (Extended grep) ist zur einfacheren Suche mit erweiterten regulären Ausdrücken. So haben die Zeichen ?, +, {, |, (, und ) bei egrep eine besondere Bedeutung für den Ausdruck, und müssen mit einem umgekehrten Schrägstrich (engl.: backslash) geschützt werden, wenn sie als Text gefunden werden sollen.
  • fgrep kann immer anstelle von grep verwendet werden, falls das zu suchende Muster keine regulären Ausdrücke enthält. Alle Sonderzeichen in der Musterzeichenkette verlieren ihre Sonderbedeutung und werden als Bestandteil des Musters verstanden.

sollen hier nur kurz erwähnt werden, um auf deren Existenz hinzuweisen.
Mit grep finden sie rasch alles in einzelnen, oder brestimmten Dateien, in Dateien bestimmter Verzeichnisse, auf der HD und manchmal finden Sie sogar noch mehr, als alles. 8)
Syntax:
grep [-CVbchilnsvwx] [-Anzahl] [-AB Anzahl] [[-e ] Ausdruck | -f Datei] [Datei ...]
Übrigens habe ich grep noch nie installiert, denn es ist wirklich fast überall vorhanden, außer auf Windows natürlich. Mit „man grep“ bekommt man auch schon die wesentlichsten Informationen. Zuerst wird darauf hingewiesen, egrep, fgrep and rgrep auch als grep -E. grep -F und grep -r verwendet werden kann, aber wir wollen uns einmal die Optionen ansehen.
Optionen:
-A Anzahl gibt Anzahl Zeilen Kontext nach jeder gefundenen Zeile aus
-B Anzahl gibt Anzahl Zeilen Kontext vor jeder gefundenen Zeile aus
-C gibt 2 Zeilen Kontext vor und nach jeder gefundenen Zeile aus
-Anzahl gibt Anzahl Zeilen Kontext vor und nach jeder gefundenen Zeile aus
-V gibt die Versionsnummer auf die Standardfehlerausgabe
-b gibt die Position jeder gefundenen Stelle mit aus
-c gibt nur die Gesamtzahl der gefundenen Stellen aus
-e Ausdruck sucht nach Ausdruck
-f Datei Datei enthält die Ausdrücke, nach denen gesucht werden soll.
-h unterdrückt die Dateinamen vor jeder Fundstelle
-i ignoriert Groß- und Kleinschreibung
-l gibt nur die Dateinamen mit Fundstellen aus
-n gibt die Zeilennummer zu jeder Fundstelle aus
-s (silent) keine Ausgabe außer Fehlermeldungen
-v gibt nur Zeilen aus, die den Ausdruck nicht enthalten
-w gibt nur Zeilen aus, in denen der Ausdruck als komplettes Wort vorkommt
-x gibt nur Zeilen aus, die den Ausdruck als ganze Zeile enthalten
Einsatzmöglichkeiten:
Grep wird in erster Linie dann eingesetzt, wenn viele Dateien durchsucht werden müssen, zum Beispiel die Quelldateien eines Computerprogramms oder viele Logdateien. In Zusammenarbeit mit „find“ kann ein ganzer Dateibaum gelesen werden. Einzelne Dateien können im allgemeinen effizienter mit einem Editor wie „vim“ durchsucht werden. Ein zweites Einsatzgebiet ist der automatisierte Aufruf in allen Arten von Shell-Skripten, oft im Rahmen einer Kette von Befehlen.
.) Einfachste Anwendung: suchen nach einem Ausdruck in einer Datei, etwa wie
grep hallo irgendwas.datei
Der Befehl kann auch in Shell-Skripten, beispielsweise in Pipes eingesetzt werden. Durch Kommandozeilenschalter kann die Arbeitsweise von grep geändert werden, so ist es beispielsweise möglich,
* alle Zeilen herauszusuchen, die den angegebenen Text nicht enthalten („-v“),
* nur Zeilen herauszusuchen, in denen das Suchmuster als ganzes Wort enthalten ist („-w“)
* die Zeilennummern, in denen der Text enthalten ist, auszugeben (Kommandozeilenschalter „-n“),
* den Dateinamen aller Dateien auszugeben, die den angegebenen Text enthalten.
* die GNU-Variante bietet darüber hinaus die Möglichkeit, nicht die komplette Zeile auszugeben, in der ein Ausdruck vorkommt, sondern lediglich alle Vorkommen des Ausdrucks selbst (Kommandozeilenschalter „-o“).
Beispiel zur Suche nach einer Zeichenfolge in mehreren Dateien:
grep -lir "Zeichenfolge" Verzeichnis/*
oder
find . -exec grep -l -e Suchtext {} ;
Praktischer Einsatz von grep ist z.B. sich unübersichtliche Config-Dateien ohne Kommentare anzeigen zu lassen mit
cat /etc/beispiel.conf |grep -e"^[^#]"
Generell funktioniert grep so, daß es alle Zeilen ausgibt, in denen das Suchmuster vorkommt. Alle Zeilen, die das Suchmuster nicht enthalten, werden weggefiltert.

Das Suchmuster kann im einfachsten Fall eine Zeichenkette sein. Die eigentliche Stärke des grep-Befehls ist aber, daß das Suchmuster ein sogenannter Regulärer Ausdruck (daher auch grep: Get Regular ExPression) sein kann. Damit kann eine Suche definiert werden, die beispielsweise nach allen Wörtern sucht, die auf „ing“ enden, aber nicht mit „D“ oder „B“ anfangen.

Normalerweise wird Groß- und Kleinschreibung von grep unterschieden, möchte man das verhindern, kann man grep mit der Option „-i“ aufrufen.

Als Ausdruck akzeptiert grep reguläre Ausdrücke mit den folgenden Steuerzeichen:

c ein einzelner Buchstabe paßt auf sich selbst
. ein Punkt paßt auf jeden Buchstaben außer auf das Zeilenende
? das dem Operator `?‘ vorangehende Muster kann null oder einmal vorkommen
* das dem Operator `*‘ vorangehende Muster kann 0 mal oder öfter vorkommen
+ das dem Operator `+‘ vorangehende Muster kann einmal oder öfter vorkommen
| die durch den Operator `|‘ verbundenden Argumente werden oder verknüpft
^ (Caret) paßt auf den Zeilenanfang
$ paßt auf das Zeilenende
paßt auf das Wortende[*]
[Buchstaben]
paßt auf alle Buchstaben; dabei können einzelne Buchstaben, aber auch Bereiche in der Form `von-bis‘ angegeben werden; wenn der erste Buchstabe nach `[‚ ein `^‘ ist, paßt der Ausdruck auf alle Buchstaben außer den Aufgeführten
( ) die Klammern fassen Ausdrücke zusammen; außerdem wird der auf den in Klammern eingeschlossene Teil des Musters passende Text markiert und mit einem folgenden `N‘ Ausdruck referenziert (Tag)
N referenziert die auf das in der N-ten runden Klammern eingeschlossene Muster passende Zeichenkette.
jedes der Sonderzeichen kann, durch einen `‘ (Backslash) eingeleitet, sich selbst suchen
b paßt auf kein Zeichen, sondern auf den Anfang oder das Ende eines Wortes
B symbolisiert den Raum innerhalb eines Wortes
w paßt auf alle alphanumerischen Zeichen [A-Za-z0-9]
W paßt auf alle nichtalphanumerischen Zeichen [^A-Za-z0-9]
Die Rangfolge der Operatoren ist (von der höchsten zur niedrigsten):`(‚, `)‘, `?‘, `*‘, `+‘ und `|‘. Die anderen Operatoren sind mit den anderen Buchstaben gleichrangig.
Mit ‚+‘ und/oder ‚|‘ und w lassen sich ganz nette Spielchen treiben und man kann nach den verschiedensten Wortkombinationen in einem file suchen.
Viel Spaß beim „grepen“. 😉
Weitere interessante Links:
LinWiki ManPage:grep oder
grep
Shell-Programmierung
und natürlich
grep

(748)


History

8 Gedanken zu „grep dir was“

  1. Spart euch doch in Zukunft diese Zusammenfassungen. Den Manual oder die Hilfe kann ich selber lesen. Ich muss das mal so deutlich sagen, obwohl sich hier jemand viel Muehe gemacht hat. Um vernuenftig mit dem Befehl umgehen zu lernen braucht es einen Beispieltext aus dem man greppen kann und Aufgaben mit LOESUNGEN noch und noecher. Nicht mal 10 Stueck oder so, nein eher 100 – 1000 Aufgaben mit Loesungen, die eben die gesamte Maechtigkeit der Regulaeren Ausdruecke abdecken. Sowas findet man aber nirgends, nicht mal in Buechern. Ich habe weder Lust noch Zeit mir die Aufgaben selber auszudenken. Ein Buch, dass mir das bietet wuerde ich sofort kaufen. Das Problem ist, dass alle eigentlich nur den Manual zusammenschreibseln ein paar Beispielchen bringen und meinen das waer es dann. So lernt man das aber nie und wenn man den Befehl nicht taeglich braucht, macht das mich zumindest auf die Dauer auch nicht schlauer.

    1. Auch wenn du sonst recht hast mein lieber Gast, so brauche ich ganz sicher keine Anweisung von dir, was ich mir sparen soll und was nicht! Wenn es mir Spaß machen sollte, tippe ich hier die grep man sogar 100 mal als Schreibügung ein, verstanden!
      Ich verwende grep eigentlich recht selten und da ich immer remote und mit vim arbeite, ist eine html Version im Browser ganz nützlich. Ja, ja da gibt es auch schon zig davon, ich brauche aber nur bestimmte Optionen und die schreibe ich mir hier auf meinem Notizblog auf, aber natürlich nur, wenn du es mir erlaubst.
      Wenn du weiterhin etwas dagegen hast, lösche ich selbstverständlich mein Notizblog sofort. Immerhin hat mich das Thema aber schon so oft interessiert, dass ich mir sogar Bücher zu reg exp gekauft habe. Welche Notation verwendest du eigentlich, ich meine arbeitest du mit einer DFA oder einer NFA engine?
      Übrigens möchte ich mir hier auch weiterhin Links zu Tutorials, Online Validierungen usw. sammeln. Ist das OK für dich oder muss ich es mir auf einen Zettel aufschreiben und den dann immer mitschleppen?
      Danke für den Kommentar und fds.

  2. Pingback: Anonymous

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.