Professor Dr. F. Schweiggert Abteilung Angewandte Informationsverarbeitung
Blatt 5


[c]



Allg. Informatik für WiWi (WS 2000)


Abgabetermin 30. November 2000

1. Reguläre Ausdrücke mit egrep und vi (22 Punkte)

Auf unserem FTP-Server (/www/thales/ftp/pub/vorlesungen/ws00/prog/5) finden Sie die Datei regexp.tex.
Diese Datei enthält die Beschreibung regulärer Ausdrücke für das Kommando egrep im latex-Format, was hier aber nicht weiter wichtig ist!

Holen Sie sich diese Datei und legen Sie sich für das Tutorium eine Kopie an!

Mit egrep:

1)
Suchen Sie alle Zeilen, die mit mindestens einem Blank beginnen!
egrep '^<blank>' regexp.tex
2)
Suchen Sie alle Zeilen, die einen tab enthalten. (Eingabe eines tab-Zeichens bei der Bash-Shell: ^v-tab)
egrep '<ctrl-v-tab>' regexp.tex
3)
Suchen Sie alle Zeilen, bei denen am Zeilenende zwei Backslashes stehen.
egrep '\\\\$' regexp.tex
4)
Suchen Sie alle Zeilen, die ein Pluszeichen enthalten.
egrep '\+' regexp.tex
5)
Suchen Sie alle Zeilen, bei denen ein einzelnes Zeichen mit je einem + geklammert ist.
egrep '\+.\+' regexp.tex
6)
Suchen Sie allen Zeilen, bei denen mehr als ein Zeichen in eckigen Klammern stehen.
egrep '\[..+\]' regexp.tex
7)
Suchen Sie alle Zeilen, in denen mehr als ein Punkt vorkommt.
egrep '\..*\.' regexp.tex
8)
Zählen Sie die Leerzeilen (am Zeilenanfang kommt sofort das newline). (Das Kommando wc -l zählt die Zeilen von der Standardeingabe.)
egrep '^$' regexp.tex | wc -l
9)
Zählen Sie alle Zeilen, die weder mit einem Backslash noch mit einem Blank beginnen.
egrep -v '^[<blank>\]' regexp.tex | wc -l
(Bei der ähnlichen ,,Lösung`` egrep '^[^<blank>\]' regexp.tex | wc -l werden die Leerzeilen nicht mitgezählt!)
10)
Zählen Sie alle Zeilen, in denen ein ^ vorkommt
egrep '\^' regexp.tex | wc -l
11)
Zählen Sie alle Zeilen, in denen ein ^ oder ein | vorkommt.
egrep '\^|\|' regexp.tex | wc -l
(alternative Lösung: egrep '[|^]' regexp.tex | wc -l)

Mit dem vi:

12)
Gehen Sie auf die erste Zeile, bei der am Anfang ein tab steht.
:/<tab>
(alternativ, falls dies nicht funktionieren sollte: :/<ctrl-v-tab>)
13)
Ersetzen Sie alle -- durch ---.
:%s/--/---/g
14)
Springen Sie auf die Zeile, bei der am Zeilende ein Blank steht.
:/<blank>$
15)
Ersetzen Sie alle & durch !.
:%s/&/!/g
16)
Machen Sie diese Ersetzung rückgängig.
undo
17)
Ersetzen Sie alle Folgen der Form <blank>&<blank> nur durch ein &. (Achtung! Das & im Ersatztext ist Platzhalter für den Suchtrefferstring!)
:%s/<blank>&<blank>/\&/g
18)
Springen Sie auf die erste Zeile, in der eine Folge beginnend mit |, danach zwei beliebige Zeichen, danach ein | vorkommt.
:/\|..\|
19)
Springen Sie auf alle Vorkommen von Folgen, die mit einem + beginnen, danach kann ein Zeichen (nicht aber der Buchstabe c) kommen, danach wieder ein +.
:/\+[^c]\{0,1\}\+
20)
Klammern Sie alle Folgen der Form | zwei Zeichen | mit " (Doppelapostroph).
:%s/\|..\|/"&"/g
21)
Machen Sie 20 rückgängig!
undo
22)
Ersetzen Sie alle Folgen |zwei Zeichen| durch +dieselben Zeichen+.
:%s/\|\(..\)\|/+\1+/g

Viel Erfolg!



Johannes Mayer 2000-11-30