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

Aus Foxwiki
Benhoffmann (Diskussion | Beiträge)
Benhoffmann (Diskussion | Beiträge)
Zeile 47: Zeile 47:
* <code>archangel:~ # grep -v ^[#] /etc/config.conf</code>oder Alternativ <code>archangel:~ # grep ^[^#] /etc/config.conf</code> – findet alle Zeilenanfänge, welche nicht mit einer Raute beginnen
* <code>archangel:~ # grep -v ^[#] /etc/config.conf</code>oder Alternativ <code>archangel:~ # grep ^[^#] /etc/config.conf</code> – findet alle Zeilenanfänge, welche nicht mit einer Raute beginnen
* <code>archangel:~ # grep ^[^#] /etc/config.conf | grep -v ^$</code> – Sucht alle Zeilenanfänge ohne Raute und mit Zeichen am Anfang (siebt Leerzeilen aus, Leerzeile ist Zeilenanfang ^ gefolgt von Zeilenende $)
* <code>archangel:~ # grep ^[^#] /etc/config.conf | grep -v ^$</code> – Sucht alle Zeilenanfänge ohne Raute und mit Zeichen am Anfang (siebt Leerzeilen aus, Leerzeile ist Zeilenanfang ^ gefolgt von Zeilenende $)
* <code>archangel:~ # grep 'Wort[1-9]*\>' Suchdatei</code> – Sucht alle Wörter, welche mit "Wort" anfangen und anschließend beliebig viele Zahlen bis zum Wortende beinhalten.
* <code>archangel:~ # grep 'Wort[1-9]\?\>' Suchdatei</code> – Sucht alle Wörter, welche mit "Wort" anfangen und anschließend eine beliebige einstellige Zahl bis zum Wortende beinhalten.


==Kontrollfragen==
==Kontrollfragen==

Version vom 5. Dezember 2019, 15:01 Uhr

Wichtung : 3

Begriffsklärung

Was sind reguläre Ausdrücke?

  • 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, Leerzeile ist Zeilenanfang ^ gefolgt von Zeilenende $)
  • archangel:~ # grep 'Wort[1-9]*\>' Suchdatei – Sucht alle Wörter, welche mit "Wort" anfangen und anschließend beliebig viele Zahlen bis zum Wortende beinhalten.
  • archangel:~ # grep 'Wort[1-9]\?\>' Suchdatei – Sucht alle Wörter, welche mit "Wort" anfangen und anschließend eine beliebige einstellige Zahl bis zum Wortende beinhalten.

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?