next | next | up | down | Inhalt | Uebungen | Complete | Kommentar

all, section 5.2.

5.2.  Übersicht

Zur Generierung von Dateinamen und bei Kontrollstruktur case. gibt es in der Shell folgende Operationen :

c                    normalerweise stellt ein Zeichen sich selbst dar
\c  'c...'  "c..."   Sonderbedeutung unterdrücken
?                    beliebiges, einzelnes Zeichen
*                    beliebig viele beliebige Zeichen
[...]                einzelnes Zeichen aus Klasse, auch Bereich a-z
[!...]               einzelnes Zeichen nicht aus Klasse (nicht X/Open)
r1r2                 r1 und dann r2
r1|r2                case r1 oder r2

Bei Dateinamen werden . am Anfang und / überall nur explizit erkannt.

Beispiele:

$ ls ?
*

$ ls -l *
-rw-r--r--   1 bischof  inform          0 Apr 10 10:03 *
-rw-r--r--   1 bischof  inform          0 Apr 10 10:03 c.01
-rw-r--r--   1 bischof  inform          0 Apr 10 10:03 c.02
-rw-r--r--   1 bischof  inform          0 Apr 10 10:03 c.09
-rw-r--r--   1 bischof  inform          0 Apr 10 10:03 ccb
-rw-r--r--   1 bischof  inform          0 Apr 10 10:03 ccr
-rw-r--r--   1 bischof  inform          0 Apr 10 10:03 fiver

$ ls '*'
*

$ ls -l c*[0-9]
-rw-r--r--   1 bischof  inform          0 Apr 10 10:03 c.01
-rw-r--r--   1 bischof  inform          0 Apr 10 10:03 c.02
-rw-r--r--   1 bischof  inform          0 Apr 10 10:03 c.09
$ ls -l 'c*[0-9]'
ls: c*[0-9]: No such file or directory

$ ls c.0[!29]
c.01

$ ls ??[!b]
ccr

Bei regulären Ausdrücken gibt es mit abnehmendem Vorrang folgende Operationen :

c                  normalerweise stellt ein Zeichen sich selbst dar
\c                 Sonderbedeutung unterdrücken
^                  Zeilenanfang
$                  Zeilenende
.                  beliebiges, einzelnes Zeichen
[...]              einzelnes Zeichen aus Klasse, auch Bereich a-z
[^...]             einzelnes Zeichen nicht aus Klasse
\(r\)      grep    markierter Ausdruck
\n         grep    was die n-te \(r\) erkannte
r*                 beliebig viele r
r+         egrep   ein oder mehr r
r?         egrep   ein oder kein r
r\{m,n\}           Anzahl, r von m bis n mal
r\{m,\}            Anzahl, r mindestens m mal
r\{m\}             Anzahl, r genau m mal
r1r2               r1 und dann r2
r1|r2      egrep   r1 oder r2
(r)        egrep   Klammerung für Vorrang

Vorsicht: mit Ausnahme von \n bei lex erkennt kein regulärer Ausdruck einen Zeilentrenner.

Beispiele Hier sind zum Vergleich die gleichen Beispiele als grep-Muster:

\.c$               C-Quellen
^cmd\..$           Dateien für cmd
^[A-Z]             Dateinamen mit großen Anfangsbuchstaben
^[^A-Z]            andere Dateinamen
^c\.[1-9]?[0-9]$   ein großes Buch (plus ein Kapitel)
[^./]              Dateinamen mit einem Zeichen, nicht . oder /
^\.                alle Dateinamen, die mit .  anfangen
^\.[^.]            alle mit .  aber nicht .  und ..
^\.(..|[^.])       besser (egrep)

Vorsicht: Reguläre Ausdrücke erkennen die längste Zeichenkette, und sie sind nur verankert, wenn ^ und $ benutzt werden. Manche egreps haben (8-Bit-)Fehler.

Wortspiele

/usr/dict/words (siehe auch spell ) enthält (oft) ein englisches Wörterbuch. Bei NeXT gibt es zusätzlich die Wort- und Stammliste /usr/dict/web2. Kernighan und Pike schlagen folgende Muster für Wortspiele vor:

$ egrep '^a?b?c?d?e?f?g?h?i?j?k?l?m?n?o?p?q?r?s?t?u?v?w?x?y?z?$' \
  /usr/dict/words | sed 3q
a
abc
abet

monotone liefert Worte mit Buchstaben in natürlicher Reihenfolge:

$egrep '^[^aeiou]*a[^aeiou]*e[^aeiou]*i[^aeiou]*o[^aeiou]*u[^aeiou]*$'\
  /usr/dict/words | sed 3q
facetious

liefert Worte mit exakt fünf aufsteigenden Vokalen:

Vorsicht: grep kennt die Option -f nicht.

Nützliche grep-Optionen:

-e re     egrep        Präfix für reguläre Ausdrücke
-f file   nicht grep   Ausdruck aus Datei
-l                     Dateiname ausgeben, falls Zeile gefunden
-n                     Zeilennummer ausgeben
-v                     (veto) nur wenn Muster nicht zutrifft
-x        fgrep        ganze Zeile muß passen
-y                     groß und klein gleich (X/Open: -i)


back | next | up | down | Inhalt | Uebungen | Complete | Kommentar


Created by unroff & hp-tools. © by Hans-Peter Bischof. All Rights Reserved (1997).

Last modified 03/July/97