Impressum | Kontakt
 Startseite | Kurse Projekte | Haskell | Fortbildungen | Linux | Suche

Reguläre Ausdrücke

Arbeitsblatt Übersicht

Viele Textprogramme enthalten die Möglichkeit, nach einem Wortteil zu suchen. Unter Linux beherrschen zahlreiche Programme erweiterte Suchfunktionen.

Beispielhaft soll das Programm grep bzw. egrep benutzt werden. grep sucht in einer angegebenen Datei nach einem Zeichenmuster und gibt im Erfolgsfall diese Zeile auf der Konsole aus. Mit einem kleinen Trick kann auch direkt in Strings gesucht werden.

Beispiel:

  grep 'ha' gedicht.txt
  echo 'Das ist mein Suchstring' | grep 'ein..u'
  echo -e 'Fisch \nfrisch \nfruchtig' | egrep -c '[Ff].i'

Die grep - Familie kennt viele reguläre Ausdrücke. Die genau Syntax hängt aber
vom Betriebssystem, dem jeweiligen Programm und der Shell ab (siehe man grep).


Übersicht über die wichtigsten Regeln

. akzeptiert irgend ein Zeichen (ohne Newline)
? vorheriges Zeichen ist optional
^ Zeilenanfang, wenn erstes Zeichen
^ Verneinung des folgenden Ausdrucks
$ Zeilenende
[ ] ein angegebenes Zeichen wird akzeptiert [a | e | i | o | u] oder [a-z]
* vorheriger Ausdruck kann beliebig oft vorkommen (0 .. )
+ vorheriger Ausdruck muss mind. 1 mal vorkommen
\{n,m\} vorheriger Ausdruck wird mind. n und höchstens m mal wiederholt
\{n\} vorheriger Ausdruck muss genau n mal vorkommen
\{n,\} vorheriger Ausdruck muss mindestens n mal vorkommen

Aufgaben

Um diese Aufgaben zu lösen, musst Du entweder den PC mit Linux booten oder dich mit putty auf einem Unix/Linux-System anmelden.

Auf einem Server werden alle Benutzeraktionen protokolliert. Dabei entstehen riesige Textdateien. Aus einer solchen Datei sollen alle Zeilen angezeigt werden,

  • die das Datum August 15th 2004 enthalten.

  • die Benutzer einer Klasse (7a, 7b oder 7c) zugeordnet werden.
    Warum ist die Suche nicht immer richtig?

  • die den Benutzernamen rmuster und eine HTML-Seite beinhalten (.htm).

  • die eine gültige E-Mailadresse beinhalten.

  • alle Zeilen, die mit einer Raute # beginnen (Kommentarzeichen).