regex(1F) (Form and Menu Language Interpreter) regex(1F)
NAME
regex - Muster mit einer Zeichenkette vergleichen
SYNTAX
regex [-e] [-v "string"] [pattern template] ... pattern [template]
BESCHREIBUNG
Das Kommando regex verwendet eine Zeichenkette von stdin und eine
Liste mit pattern/template-Paaren und führt regex(3X) aus, um die Zei-
chenkette mit jedem Muster pattern zu vergleichen, bis eine Überein-
stimmung gefunden wird. Wenn eine Übereinstimmung gefunden wird,
schreibt regex die entsprechende Schablone template auf stdout und
gibt TRUE zurück. Für das letzte (oder einzige) Muster pattern ist
keine Schablone erforderlich. Wenn dieses Muster mit der Zeichenkette
übereinstimmt, gibt die Funktion nur TRUE zurück. Wenn keine Überein-
stimmung gefunden wird, gibt regex FALSE zurück.
OPTIONEN
-e regex wertet die entsprechende Schablone aus und schreibt das
Ergebnis auf stdout.
-v "string"
Wenn -v angegeben wird, wird string anstelle von stdin mit
Mustern verglichen.
Das Argument pattern ist ein regulärer Ausdruck, wie er unter
regex(3X) beschrieben wird. In den meisten Fällen sollte pattern in
Hochkommata gesetzt werden, damit nicht die Sonderbedeutungen der Zei-
chen verwendet werden. Nur für das letzte Muster pattern in der Liste
ist kein template erforderlich.
Das Argument template kann die Zeichenketten $m0 bis $m9 enthalten,
die auf den Teil von pattern erweitert werden, der in den Konstruktio-
nen (...)$0 bis (...)$9 eingeschlossen ist (siehe folgende Beispiele).
Bei der Verwendung dieser Funktion, muß template in Hochkommata
gesetzt werden, damit FMLI bei der Analyse $m0 bis $m9 nicht erwei-
tert. Mit dieser Funktion erhält regex einen Großteil des Leistungsum-
fangs von cut(1), paste(1) und grep(1) und verfügt über einige Funk-
tionen von sed(1). Wenn keine Schablone template vorhanden ist, ist
der Standardwert "$m0$m1$m2$m3$m4$m5$m6$m7$m8$m9".
BEISPIELE
Das folgende Beispiel zeigt, wie Sie den vierten bis achten Buchstaben
aus einer Zeichenkette ausschneiden. Dieses Beispiel gibt strin aus
und TRUE zurück:
`regex -v "my string is nice" '^.{3}(.{5})$0' '$m0'`
Dieses Beispiel zeigt, wie Sie in einem Formular prüfen, daß die Ein-
gabe in Feld 5 eine Ganzzahl ist:
valid=`regex -v "$F5" '^[0-9]+$'`
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
regex(1F) (Form and Menu Language Interpreter) regex(1F)
Dieses Beispiel zeigt, wie Sie in einem Formular eine Umgebungsvaria-
ble, die eine der Zahlen 1, 2, 3, 4, 5 enthält, in die Buchstaben a,
b, c, d, e übersetzen:
value=`regex -v "$VAR1" 1 a 2 b 3 c 4 d 5 e '.*' 'Error'`
Das Muster '.*' bedeutet hier "alles andere".
Im folgenden Beispiel bilden alle drei Zeilen einen einzigen Ausdruck
in rückwärtsgerichteten Hochkommata. Dieser Ausdruck kann alleine in
eine Menüdefinitionsdatei gestellt werden. Ausdrücke in rückwärtsge-
richteten Hochkommata werden bei ihrer Analyse erweitert. Die Ausgabe
eines Ausdrucks in rückwärtsgerichteten Hochkommata wird in die Defi-
nitionsdatei aufgenommen, die analysiert wird. Im folgenden Beispiel
würde der Ausdruck die Datei /etc/passwd lesen und ein dynamisches
Menü aller Anmelde-IDs in diesem System erstellen.
`cat /etc/passwd | regex '^([^:]*)$0.*$' '
name=$m0
action=`message "$m0 is a user"`'`
DIAGNOSE
Wenn kein übereinstimmendes Muster gefunden wird, gibt regex FALSE
zurück. Andernfalls wird TRUE zurückgegeben.
HINWEISE
Muster und Schablonen müssen häufig in Hochkommata eingeschlossen wer-
den, damit nicht die Sonderbedeutungen der Zeichen verwendet werden.
Dies gilt vor allem, wenn Sie die Variablen $m0 bis $m9 in der Scha-
blone verwenden, da FMLI die Variablen (normalerweise auf "") erwei-
tert, bevor regex diese erkennt.
Einzelne Zeichen in Zeichenklassen (in []) müssen vor Zeichenbereichen
aufgelistet werden, da sie andernfalls nicht erkannt werden. Zum Bei-
spiel werden bei Angabe von [a-zA-Z/] keine Unterstreichungszeichen
() oder Schrägstriche (/)gefunden, wohl aber bei Angabe von
[/a-zA-Z].
Die von regcmp akzeptierten regulären Ausdrücke unterscheiden sich
etwas von denen anderer Dienstprogramme (zum Beispiel von sed, grep,
awk oder ed).
Wenn regex mit der Option -e verwendet wird, werden nachfolgende Kom-
mandos ignoriert. Das heißt, wenn eine Anweisung in rückwärtsgerichte-
ten Hochkommata folgendermaßen aussieht:
`regex -e ...; command1; command2`
würden command1 und command2 nicht ausgeführt werden. Wird der Aus-
druck jedoch in zwei Ausdrücke aufgeteilt, wird das gewünschte Ergeb-
nis erzielt:
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98
regex(1F) (Form and Menu Language Interpreter) regex(1F)
`regex -e ...``command1; command2`
SIEHE AUCH
awk(1), cut(1), grep(1), paste(1), sed(1), regcmp(3G), regex(3G).
Seite 3 Reliant UNIX 5.44 Gedruckt 11/98