LPIC101/103.7 Regulären Ausdrücke
Wichtung : 3
Begriffsklärung
- Reguläre Ausdrücke erleichtern das durchsuchen von Texten
- Sie beschreiben anhand von Wildcards, Suchwörtern und Positionsangaben und ermöglichen so eine differenziertere Suche
- Wildcards werden auch Jokerzeichen genannt und sind Platzhalter für ein oder mehrere Zeichen
- Reguläre Ausdrücke werden in englisch Regular Expressions genannt
- Reguläre Ausdrücke werden meist mit RegEx oder RegExp abgekürzt
Wo kann man reguläre Ausdrücke verwenden
- Mit dem Filter "grep" in der Shell
- Mit dem Vi-Editor in der Shell
- Im Kate Editor (Option {} aktivieren im Suchen Fenster)
- In vielen weiteren Programmen
Gültige Metazeichen
Metazeichen beschreiben die Position einer Suchanfrage. Gültige Metazeichen sind :
^
Textanker für Zeilenanfang$
Textanker für Zeilenende\<
markiert einen Wortanfang\>
markiert ein Wortende\
schützt ein Zeichen vor der Interpretation (z.B. /$ sucht nach Dollarzeichen und nimmt diesen seine Spezialbedeutung)[]
sucht nach einem Zeichen oder einer Zeichenfolge innerhalb des eckig geklammerten Bereichs (z.B. [a-g] )[^Zeichen]
Schließt das Zeichen nach dem Circonflex aus der Suche aus
Wildcards (Joker)
*
bezeichnet keine oder beliebig viele Wiederholungen des vorangegangenen Zeichens?
bezeichnet keine oder eine Wiederholung des vorangegangenen Zeichens+
bezeichnet, dass das voranstehende Zeichen mindestens einmal vorkommt.
wird als Platzhalter für ein beliebiges Zeichen verwendet
Verwendung von grep
- Der Filter grep bedeutet "Global search for Regular Expressions and Print out" (Sinngemäß: Globale Suche durch Reguläre Ausdrücke mit Ausgabe).
Hinweise für die Verwendung von grep:
-v
ist bei grep nicht verbose (Gesprächigkeit), sondern invertiert die Ausgabe (z.B. grep -v "Testwort" zeigt alle Zeilen ohne Testwort)-E
aktiviert erweiterte reguläre Ausdrücke (entspricht dem Befehl egrep)-i
ignoriert Groß- & Kleinschreibung
Beispiele für Verwendung von grep mit RegEx:
archangel:~ # grep [Ww]ill[iy] Adressliste
– sucht in der Datei Adressliste nach Willi,willi,Willy und willy. (grep -i Will[iy] liefert das gleiche Ergebnis, ignoriert jedoch auch die Groß- & Kleinschreibung von den anderen Buchstaben)archangel:~ # grep W.lly Adressliste
– der Punkt ersetzt ein beliebiges Zeichen, somit würden Willy, Wally usw. gefunden werden, sofern diese existieren.archangel:~ # grep -v ^[#] /etc/config.conf
oder Alternativarchangel:~ # grep ^[^#] /etc/config.conf
– findet alle Zeilenanfänge, welche nicht mit einer Raute beginnenarchangel:~ # grep ^[^#] /etc/config.conf | grep -v ^$
– Sucht alle Zeilenanfänge ohne Raute und mit Zeichen am Anfang (siebt Leerzeilen aus)
Kontrollfragen
Wonach sucht RegEx ^[^#]
Antwort : Nach einem Zeilenanfang ohne Raute
Sie geben in der Shell ls a* ein. Was erhalten Sie als Antwort? Antwort : Alle Dateien im aktuellen Verzeichnis, welche mit a anfangen.
Sie geben in der Kate-Suche mit regulären Ausdrücken a* ein, was erhalten Sie als Antwort?