Durchsuchen von Textdateien mittels regulärer Ausdrücke

Wichtung: 3

Beschreibung: Die Kandidaten sollen in der Lage sein, Dateien und Text mittels regulärer Ausdrücke (Regexp) zu bearbeiten. Dieses Lernziel beinhaltet das
Schreiben einfacher regulärer Ausdrücke mit verschiedenen Notationselementen. Ebenfalls enthalten ist die Nutzung Regexp-fähiger Tools um das Dateisystem oder Dateiinhalte zu durchsuchen.

Wichtigste Wissensgebiete:
Schreiben einfacher regulärer Ausdrücke (Regexp).
Suche im Dateisystem oder in Dateien mittels einfacher regulärer Ausdrücke.

Liste wichtiger Dateien, Verzeichnisse und Anwendungen:
grep
sed

Reguläre Ausdrücke (regular expressions - regexp)

Reguläre Ausdrücke sind ein relativ komplexes Thema und ähneln den Wild-Cards, die in der Shell genutzt werden. Reguläre Ausdrücke stellen eine Art Platzhalter für Text dar, um Suchmuster zu erstellen. In der Die LPI-101-Prüfung werden aber nur einfache reguläre Ausdrücke vorausgesetzt.

. = Der Punkt steht für ein beliebiges Zeichen.
^ = Das Caret (Dach) steht für den Anfang einer Zeile. D.h. der Begriff muss ganz links am Zeilenanfag stehen.
$ = Das Dollar-Zeichen kennzeichnet das Ende einer Zeile, d.h. der davor stehende Ausdruck muss die Zeile abschließen.

Beispiele:
^Guten Tag trifft auf die Zeile "Guten Tag Herr Müller," zu.
Grüßen$ trifft auf die Zeile "Guten Tag Herr Müller," zu.
H.se trifft auf die Begriffe "Hose" und "Hase" zu.


.* eine Folge von beliebigen Zeichen, auch die leere Folge.

? = Das Fragezeichen steht für keine oder eine Wiederholung eines vorherigen Ausdrucks oder Zeichens.
+ = Das Pluszeichen steht für genau eine oder mehrere Wiederholungen eines vorherigen Ausdrucks oder Zeichens.
* = Das Sternchen steht für keine bis beliebig viele Wiederholungen eines vorherigen Ausdrucks oder Zeichens.


\< = Wortanfang
\> = Wortende

[abc] = Zeichen muss aus der Menge abc sein.
[^abc] = Zeichen darf nicht aus der Menge abc sein.
* = Das Sternchen steht für keine bis beliebig viele Wiederholungen eines vorherigen Ausdrucks oder Zeichens.

Beispiele:
cp ^[a-d]* /root kopiert alle Dateien, die mit a, b, c oder d beginnen, nach /root.
M[ae][iy]e\?r sucht alle Formen von Maier (Maier, Mayer, Meier, Meyer, Mayr)

Dateien mit grep durchsuchen

grep wird dazu genutzt, um Dateien und Eingabe-Ströme zu durchsuchen und bei erfolgreichen Treffern die entsprechende Zeile auf dem Bildschrim auszugeben.

grep peter /etc/passwd gibt beispielsweise die entsprechende Zeile aus der /etc/passwd aus.

Natürlich ist es jetzt möglich, reguläre Ausdrücke für das Durchsuchen mit grep einsetzen:

grep "[Mm][ae][iy]e\?r" /etc/passwd sucht alle Formen von Maier (Maier, Mayer, Meier, Meyer, Mayr) in der Passwort-Datei passwd.

Dasselbe ist natürlich auch mit Datenströmen möglich. Mit dem Befehl ps aux kann man sich sämtliche Prozesse anzeigen lassen. In Verbindung mit grep ist es nun möglich, sich alle Prozesse anzeigen lassen, in denen der Begriff chef vorkommt:

ps aux | grep chef

Text ersetzen mit sed

Beispiele
sed s/Damm/Herr Damm/g = Damm wird durch Herr Damm ersetzt
sed -e "s/Damm/Herr Damm/g" test1.txt > test2.txt = Damm wird durch Herr Damm ersetzt und der überarbeitete Text in test2.txt gespeichert.