Lehrer Nussbaumer - Linux bash-Programmierung

Grundlagen

Datenstrukturen

  1. Zeichenketten
  2. Datenfelder
  3. Umgebungs- Variable
  4. Reguläre Ausdrücke

Programmstrukturen 

Beispiele


-----------------
letzte Änderung:
09 December 2021
-----------------
Lehrer Nussbaumers Seite

... in Arbeit ...

Reguläre Ausdrücke (regular expressions)

Reguläre Ausdrücke legen bestimmte Muster fest, die von Textdaten erfüllt werden müssen. Einige grundlegende Funktionsweisen werden in den folgenden Beispielen vorgestellt.

Beispiele

Wir untersuchen den Inhalt eines Verzeichnisses mit Hilfe des Befehles "ls" und leiten die Ausgabe durch "grep":

alfred@newbie:~/bash/beispiele > ls | grep [f]
feld1
feld2
feld3
feldfor
alfred@newbie:~/bash/beispiele > ls | grep [fv]
feld1
feld2
feld3
feldfor
variable
view
alfred@newbie:~/bash/beispiele > ls | grep fv

"grep" gleicht die Ausgabe von "ls" mit allen Zeichen ab, die innerhalb der eckigen Klammern angegeben werden. Daher werden zunächst alle Dateinamen ausgegeben, die (wenigstens) ein "f" enthalten. Die zweite Abfrage wählt alle Dateinamen aus, die entweder ein "f" oder ein "v" enthalten. Die letzte Abfrage sucht nach allen Dateinamen, die den Teilstring "fv" enthalten (diese Suche ist offensichtlich leer).

Mit dem regulären Ausdruck [Buchstabe - Buchstabe] werden alle Dateinamen angezeigt, die einen Buchstaben enthalten, der im angegebenen Bereich liegt:

alfred@newbie:~/bash/beispiele > ls | grep [a-c]
auswahl1
auswahl2
beispiel1
eingabe
variable

Ein dem ersten Buchstaben vorangestelltes "^" (Caret) legt fest, dass der Ausdruck allen Zeichen außer den angeführten passen muss (hier müssen also irgendwelche Zeichen außer Kleinbuchstaben auftreten):

alfred@newbie:~/bash/beispiele > ls | grep [^a-z]
auswahl1
auswahl2
beispiel1
feld1
feld2
feld3
string1

Ein dem Operator "$" vorausgehender Ausdruck passt auf das Zeilenende:

alfred@newbie:~/bash/beispiele > ls | grep [e]$
eingabe
variable
alfred@newbie:~/bash/beispiele > ls | grep [1e]$
auswahl1
beispiel1
eingabe
feld1
string1
variable

Reguläre Ausdrücke können in weiten Bereichen kombiniert werden:

alfred@newbie:~/bash/beispiele > ls | grep 'feld[1-3]'
feld1
feld2
feld3
alfred@newbie:~/bash/beispiele > ls | grep 'feld[^1-3]'
feldfor

Elemente für reguläre Ausdrücke

Element Beschreibung
. Jedes Zeichen außer \n ("neue Zeile") und \r ("Wagenrücklauf").
* Keine oder mehrere Entsprechungen für den vorangehenden Ausdruck.
+ Eine oder mehrere Entsprechnungen für den vorangehenden Ausdruck.
? Keine oder eine Entsprechung für den vorangehenden Ausdruck.
() Fasst ein Teilmuster zusammen
[] Begrenzt eine Zeichenmenge. Falls als erstes Zeichen ein ^ (Caret) auftritt, gilt das Gegenteil der angegebenen Zeichen.
{n} Genau n-maliges Auftreten des vorangehenden Ausdrucks.
{n,} Mindestens n-maliges Auftreten des vorangehenden Ausdrucks.
{n,m} n- bis m-maliges Auftreten des vorangehenden Ausdrucks.
{0,m} Höchstens m-maliges Auftreten des vorangehenden Ausdrucks.
| Alternative Ausdrücke
\ Escape-Zeichen, z.B. für n, r, t, ., -, *, +, ?, (, ), [, ], {, }, /, |, ...
\s Leerraum-Zeichen (Leerzeichen, Tabulator, Zeilenschaltung, Wagenrücklauf)
\S [^\s]
\d Ziffern [0-9]
\D [^\d]
\p{X} Legt eine Kategorie von Zeichen fest (X).
\P{X} [^\p{X}]
\w alphanumerische Zeichen [A-Za-z0-9]
\W nicht alphanumerische Zeichen [^A-Za-z0-9]

Verschiedene Anwendungen (perl, Dienstprogramme, XML-Schema, etc. ) verwenden geringfügig voneinander abweichende Muster für reguläre Ausdrücke.


© Alfred Nussbaumer, Weblog "MiniNuss"