Awk: Übungen: RegExp

Aus Wikibooks


Erläuterungen
Schwierigkeitsgrad der Übungen:
... sehr einfach ... ein bisschen schwieriger
Lösungen:

Die Links zu den Lösungen sind per Link-Bild realisiert. Im Gegensatz zu den üblichen Wikibooks-Gepflogenheiten gelangen Sie durch einen Klick auf das Symbol zur entsprechenden Lösungsseite.


Übungen[Bearbeiten]

Gegeben sei die Datei pupil folgenden Inhalts:

Name            Klasse  Deutsch Mathematik Physik
-------------------------------------------------------
Hans            1a      1       2          3 
Frieda          2b      3       2          2
Helga           1b      2       1          1
Michael         1a      2       1          3
Olga            2a      3       1          2
Karl-Hans       3c      3       4          2

Simple reguläre Ausdrücke[Bearbeiten]

Aufgabe
A10 Gegeben sei die Anweisung awk '/1a/' pupil. Welche Datensätze werden durch Ausführung dieser Anweisung ausgegeben?
A20 Gegeben sei die Anweisung awk '$3~/2/ {print $1}' pupil. Welche Daten werden durch Ausführung dieser Anweisung ausgegeben?
A30 Erstellen Sie ein awk-Skript, welches alle Schülerdatensätze aus der Textdatei pupil auf der Standardausgabe listet, in deren Namensspalte die Zeichenkette Hans vorkommt.


Beliebige Zeichen[Bearbeiten]

Aufgabe
A40 Gegeben sei die Datei pupil. Erstellen Sie ein awk-Skript, das die Datensätze aller Schüler mit einem Namen länger als 5 Zeichen aus dieser Datei auf der Standardausgabe listet.


Anker[Bearbeiten]

Aufgabe
A50 Gegeben sei die Anweisung awk '$1~/a$/' pupil. Welche Datensätze werden durch Ausführung dieser Anweisung ausgegeben?
A60 Erstellen Sie ein awk-Skript, das alle Datensätze der Datei pupil mit dem Schülernamen Hans ausgibt.


Zeichenklassen[Bearbeiten]

Aufgabe
A70 Gegeben sei die Anweisung awk '/^[A-H]/' pupil. Welche Datensätze werden durch Ausführung dieser Anweisung ausgegeben?
A75 Gegeben sei die Anweisung awk '/^[^A-H]/' pupil. Welche Datensätze werden durch Ausführung dieser Anweisung ausgegeben?
A80 Erstellen Sie ein awk-Skript, das entsprechende Datensätze der Datei pupil unter folgender Voraussetzung ausgibt: Das zweite Zeichen im Datensatz muss der Buchstabe a oder e sein.


Alternativen[Bearbeiten]

Aufgabe
A90 Gegeben sei die Anweisung awk '$1~/Hans|Olga/' pupil. Welche Datensätze werden durch Ausführung dieser Anweisung ausgegeben?
A100 Erstellen Sie ein awk-Skript, das entsprechende Datensätze der Datei pupil unter folgender Voraussetzung ausgibt: Die Schülernamen beginnen mit Ha, He oder Ka.


Gruppierung[Bearbeiten]

Aufgabe
A110 Liefern die Anweisungen awk '$1~/^(Ha|Ka).../' pupil und awk '$1~/^Ha|Ka.../' pupil das gleiche Ergebnis?


Wiederholungen[Bearbeiten]

Aufgabe
A120 Erstellen Sie ein awk-Skript, das Datensätze der Datei pupil unter folgender Voraussetzung ausgibt: Der Schülername beginnt mit H und endet mit s.
A130 Gegeben ist die Anweisung awk '/^Ha{2,}llo$/'. Nach Start dieser Anweisung werden über die Standardeingabe die Strings
  • Hallo
  • Haaallodi
  • Haaaallo

eingegeben. Welche davon werden über das awk-Skript, d.h nicht nur als Echo, an die Standardausgabe weitergeleitet?

A140 Erstellen Sie ein awk-Skript, das Datensätze der Datei pupil unter folgender Voraussetzung ausgibt: Der Schülername sei Zeichen lang mit (also Namen die 2, 4, 6, 8, ... Zeichen lang sind).


Weitere Aufgaben[Bearbeiten]

Aufgabe
W10 Geben sie einen regulären Ausdruck an, der auf alle Strings passt, die aus mehr als 2 Zeichen bestehen, mit einem Großbuchstaben beginnen und mit einer Ziffer enden.
W20 Geben sie einen regulären Ausdruck an, der Gleitkommazahlen repräsentiert. Beispiele für Gleitkommazahlen:
  • -2
  • +3.67801
  • 56.
  • 3.1e34
  • -569E-4
  • .65E+9

Eingaben, auf die der reguläre Ausdruck nicht zutreffen darf, sind bspw.:

  • abc
  • 5ab
  • ab2
  • 1a2
  • .
  • (leere Eingabe)


W30 Geben Sie einen regulären Ausdruck für eine Zeichenkette bestehend aus den Buchstaben W und F an, bei der sowohl die Summe der Buchstaben W, als auch die der Buchstaben F eine gerade Zahl ergibt. Beispiele:
  • WWFF
  • FWFW
  • WFFFFW
  • WWWFFWFFWWFWWF
  • WFFWFWW (Summe der Buchstaben F ist ungerade)