Muster korn

Die Korn-Shell unterstützt alle diese Funktionen innerhalb ihrer Musteranpassungsfunktionen. Die POSIX-Zeichenklassennamen sind am nützlichsten, da sie in verschiedenen Gebietsschemas funktionieren. In Tabelle 4-9 sind die Musteranpassungsoperatoren der Korn-Shell aufgeführt. Die klassische Verwendung für Musterübereinstimmungsoperatoren besteht darin, Komponenten aus Pfadnamen wie Verzeichnispräfixen und Dateinamenuffixen zu entfernen. In diesem Sinne ist hier ein Beispiel, das zeigt, wie alle Operatoren arbeiten. Angenommen, der Variablenpfad hat den Wert /home/billr/mem/long.file.name; dann: Standardmäßig versucht ein erweitertes Muster, die längste mögliche Zeichenfolge zu entsprechen, die mit dem Generieren der längsten Gesamtübereinstimmung übereinstimmt. Dies wird als gieriges oder maximales Match bezeichnet. Eine nicht gierige (oder minimale) Übereinstimmung entspricht der kürzest möglichen Zeichenfolge. Perl war das erste Scripting langauge, das nicht-geedy Matching populär machte. Übrigens sind ksh93 und zsh die einzigen Schalen, die nicht gierige Übereinstimmung unterstützen. Wenn das Muster mit dem Anfang des Variablenwerts übereinstimmt, löschen Sie den kürzesten Teil, der übereinstimmt, und geben Sie den Rest zurück. ksh93 bietet eine Möglichkeit, erweiterte Muster mit zwei printf-Optionen in reguläre Ausdrücke und umgekehrt zu übersetzen. Laut David Korn ist eine Shell in erster Linie eine String-Verarbeitungssprache.

Pattern Matching ist ein wichtiges Komponierung einer solchen Sprache und in der Tat Korn Shell 93 (ksh93) hat ausgezeichnete Unterstützung für erweiterte Muster sowie reguläre Ausdrücke. Erweiterte Muster können als Klasse oder Typ erweiterter regulärer Ausdrücke betrachtet werden. Sowohl die Bash- als auch die Zsh-Shells haben etwas Ähnliches, aber nicht so umfassend. Wie üblich werden jedoch erweiterte Muster recht knapp in der man-Seite ksh93 dokumentiert. Sed bedeutet Stream-Line-Editor. Es sucht wie grep, ist dann aber in der Lage, das gefundene Muster zu ersetzen. Wenn Sie alle Vorkommen von «arm» mit «reich» ändern möchten, tun: sed -e `s/poor/rich/g` Dateiname. Oder was oft in Softwarepaketen zu sehen ist, die nach Erhalt einer Propperkonfiguration kompiliert werden müssen, ist eine ganze Datei, die mit Ersatzmustern gefüllt ist, wie: /@foo@/s;; König;g. Diese Datei mit inumerierbaren Zeilen wie dieser muss sed mit gegeben werden: sed -f sedscript filename.