Looking for bash Keywords? Try Ask4Keywords

BashMusterübereinstimmung und reguläre Ausdrücke


Syntax

  • $ shopt -u Option # Deaktiviert die eingebaute 'Option' von Bash
  • $ shopt -s Option # Aktiviert die eingebaute 'Option' von Bash

Bemerkungen

Charakterklassen

Gültige Zeichenklassen für den Globus [] werden vom POSIX-Standard definiert:

alnum alpha ascii blank cntrl digit graph unterer Druckpunkt Leerzeichen oberes Wort xdigit

Innerhalb von [] mehrere Zeichenklassen oder -bereiche verwendet werden, z.

$ echo a[a-z[:blank:]0-9]*

passt zu jeder Datei, die mit einem a beginnt und entweder einem Kleinbuchstaben oder einem Leerzeichen oder einer Ziffer folgt.

Es sollte jedoch beachtet werden, dass ein [] Glob nur vollständig negiert werden kann und nicht nur Teile davon. Das negierende Zeichen muss das erste Zeichen sein, das auf das Öffnen folgt [ z. B. passt dieser Ausdruck auf alle Dateien, die nicht mit einem a

$ echo [^a]*

Das Folgende stimmt mit allen Dateien überein, die mit einer Ziffer oder einem ^

$ echo [[:alpha:]^a]*

Es entspricht nicht jede Datei oder einen Ordner , die mit Ausnahme eines mit mit Buchstaben beginnen a , weil die ^ als Literal interpretiert ^ .

Glob-Zeichen entkommen

Es ist möglich, dass eine Datei oder ein Ordner ein Glob-Zeichen als Teil seines Namens enthält. In diesem Fall kann ein Glob mit einem vorangestellten \ abgehängt werden, um eine wörtliche Übereinstimmung zu erzielen. Ein weiterer Ansatz ist die Verwendung Doppel "" oder Single '' zitiert die Datei zu adressieren. Bash verarbeitet keine Globs, die in "" oder '' .

Unterschied zu regulären Ausdrücken

Der wichtigste Unterschied zwischen Globs und regulären Ausdrücken besteht darin, dass gültige reguläre Ausdrücke einen Qualifizierer sowie einen Quantifizierer erfordern. Ein Qualifier gibt an, was abgeglichen werden soll, und ein Quantifizierer gibt an, wie oft der Qualifier abgeglichen wird. Das äquivalente RegEx zum * glob lautet .* Wobei . steht für ein beliebiges Zeichen und * steht für null oder mehr Übereinstimmungen mit dem vorherigen Zeichen. Das entsprechende RegEx für die ? glob ist .{1} . Nach wie vor die Qualifikation . stimmt mit einem beliebigen Zeichen überein und {1} gibt an, dass das vorhergehende Qualifikationsmerkmal genau einmal übereinstimmt. Dies sollte nicht mit dem verwechselt werden ? Quantifizierer, der in einem RegEx mit Null oder einmal übereinstimmt. Das [] glob is kann in RegEx genauso verwendet werden, solange ein obligatorischer Quantifizierer folgt.

Gleichwertige reguläre Ausdrücke

Glob RegEx
* .*
? .
[] []

Musterübereinstimmung und reguläre Ausdrücke Verwandte Beispiele