LPIC101/103.7 Regulären Ausdrücke: Unterschied zwischen den Versionen

Aus Foxwiki
Benhoffmann (Diskussion | Beiträge)
Benhoffmann (Diskussion | Beiträge)
Zeile 36: Zeile 36:
* Der Filter grep bedeutet "Global search for Regular Expressions and Print out" (Sinngemäß: Globale Suche durch Reguläre Ausdrücke mit Ausgabe).
* 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:
'''Hinweise für die Verwendung von grep:'''
* <code>-v</code> ist bei grep nicht verbose (Gesprächigkeit), sondern invertiert die Ausgabe (z.B. grep -v "Testwort" zeigt alle Zeilen ohne Testwort)
* <code>-v</code> ist bei grep nicht verbose (Gesprächigkeit), sondern invertiert die Ausgabe (z.B. grep -v "Testwort" zeigt alle Zeilen ohne Testwort)
* <code>-E</code> aktiviert erweiterte reguläre Ausdrücke (entspricht dem Befehl egrep)
* <code>-E</code> aktiviert erweiterte reguläre Ausdrücke (entspricht dem Befehl egrep)

Version vom 5. Dezember 2019, 13:41 Uhr

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.confoder Alternativ archangel:~ # grep ^[^#] /etc/config.conf – findet alle Zeilenanfänge, welche nicht mit einer Raute beginnen
  • archangel:~ # 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?