#!/bin/sh # # # Author: Bernhard Kuehl # Universitaet Osnabrueck # Wed Jun 11 11:56:32 MET DST 1997 # File: testRegex # Description: # selbsterklaerend # # BEMERKUNG: # Generell fehlt der Aufgabe ein Punkt, wo # mit -v gesucht werden muss!! # Der Wort Begriff muss fuer diese Aufgabe # in der Aufgabenstellung exakt definiert werden, # oder man sagt 2. Loesungen: eine mit \<...\> als # Wort und eine mit dem Wortbegriff, das leerzeichen # und Tab Woerter trennen. # PATH=/usr/local/gnu/bin:/usr/bin:/bin:/usr/ucb export PATH #SRC=/home/sp/Blatt/Blatt7/Src/search # Lehre SRC=/home/bernd/vorl/sp/Uebungen/Blatt7/Src/search # applied clear echo Zeilen, welche mit einem a beginnen und mit einem a enden: echo cat $SRC |egrep '^a($|.*a$)' read x clear echo Zeilen, welche mit dem gleichen Zeichen beginnen und enden: echo cat $SRC |egrep '^(.)($|.*\1$)' read x clear echo Zeilen, die vier gleiche Kleinbuchstaben enthalten: echo cat $SRC |egrep '.*([a-z]).*\1.*\1.*\1' read x clear echo alle Palindrome, die aus fuenf Buchstaben bestehen: echo #cat $SRC |egrep '\<([^ ])([^ ])[^ ]\2\1\>' cat $SRC | egrep '\<([[:alnum:]])([[:alnum:]])[^ ]\2\1\>' read x clear echo Zeilen mit einem Wort, das mit einem r bzw. dem Text Opa\ beginnt: echo cat $SRC |egrep '\<(r|Opa)' read x clear echo Zeilen mit den Nachname Meyer \(Maier, Meier, Mayer ...\): echo cat $SRC |egrep 'M[ae][iy]e?r' read x clear echo Zeilen, die eines der Woerter eins, zwei, zzwei, eeins enthalten: echo cat $SRC |egrep '\<(e?eins|z?zwei)\>' read x clear echo 'Zeilen mit einem Wort, das nicht mit einem ^, U, $ beginnt:' echo # cat $SRC |egrep '\<[^^U$]' # Probleme gibts bei Zeilen wie $a # Das $-Zeichen gehoert nicht zu einem Wort => die Zeile enthaelt das Wort a # => die Zeile passt cat $SRC |egrep '\<[^U]' read x clear echo 'Zeilen mit einem Wort, das nicht mit einem ^, U, $ endet:' # cat $SRC |egrep '[^^U$]\>' cat $SRC |egrep '[^U]\>' read x clear echo 'Zeilen, in der kein Wort mit einem ^, U, $ endet:' # Naja: Es kann kein Wort (im Sinne von <...>) mit der Endung ^ oder $ # geben! Daher diese Loesung. In der sind Woerter duch Tab oder Space # getrennt. cat $SRC |egrep -v '(\^|U|\$)[ ]*$|(\^|U|\$)[ ]+.*$' read x clear echo 'Zeilen, mit korrektem C-Kommentar. Der Kommentar beginnt am Anfgang ' echo 'und endet am Ende der Zeile' cat $SRC | egrep '^\/\*\/*([^*/]|[^*]\/|\*[^/])*\**\*\/$' exit 0