Reguläre Ausdrücke in Textdateien durchsuchen
Code: 103.7
Du bist nicht angemeldet. Melde dich an, um deinen Lernfortschritt zu speichern und Quizze zu bearbeiten.
Textdateien mit regulären Ausdrücken durchsuchen – Teil 1
103.7.L1
- Kernkonzepte von **Reguläre Ausdrücke** verstehen
- Prüfungsrelevante Befehle und Konfigurationen beherrschen
- Typische Fehlerquellen erkennen und beheben
## Zusammenfassung
Diese Lektion behandelt das LPIC-Thema **Textdateien mit regulären Ausdrücken durchsuchen – Teil 1**. Das Thema gehört zum Bereich Reguläre Ausdrücke und ist Teil des offiziellen Prüfungsstoffs.
Im Fokus stehen die praktischen Grundlagen, die für die Zertifizierung essenziell sind. Wichtige Schwerpunkte sind: grep, sed, awk.
## Wichtige Befehle
- Inhalt folgt in der aktualisierten Version
## Prüfungstipps
- Lesen Sie die Manpages zu allen genannten Befehlen
- Üben Sie Befehle in einer virtuellen Maschine oder Container-Umgebung
- Achten Sie auf die Unterschiede zwischen Distributionen
## Weiterführende Links
- [LPI-Lernmaterial (offiziell)](https://www.lpi.org)
- [Linux Man Pages Online](https://man7.org/linux/man-pages/)
Quiz (4 Fragen)
Welcher erweiterte reguläre Ausdruck würde auf eine beliebige E-Mail-Adresse wie info@example.org passen?
Erklärung: \S+ passt auf ein oder mehrere Nicht-Leerzeichen, @ ist literal, dann wieder \S+, dann \. (escaped Punkt) und \S+. Dies deckt typische E-Mail-Strukturen ab.
Welcher erweiterte reguläre Ausdruck würde ausschließlich auf eine beliebige IPv4-Adresse in Punktnotation passen, wie 192.168.15.1?
Erklärung: [0-9]{1,3} passt auf 1-3 Ziffern. Der Punkt muss im regulären Ausdruck mit Backslash escaped werden (\.), da er ein Meta-Zeichen ist.
Wie kann der Befehl grep verwendet werden, um den Inhalt der Datei /etc/services aufzulisten, wobei alle Kommentare (Zeilen, die mit # beginnen) verworfen werden?
Erklärung: grep -v ^# /etc/services verwirft (-v invertiert, d.h. zeigt NICHT-passende Zeilen) alle Zeilen, die mit dem Anker ^# beginnen (Kommentarzeilen).
Die Datei domains.txt enthält eine Liste von Domainnamen, einen pro Zeile. Wie würde der Befehl egrep benutzt, um nur .org- oder .com-Domains aufzulisten?
Erklärung: $ ist ein Anker für das Zeilenende. .org$ passt auf Zeilen, die mit .org enden, | steht für ODER (im erweiterten regulären Ausdruck).
✓ Quiz abgeschlossen! 🎉
/ richtig
Karteikarten (3)
Frage
Wie würde der Befehl find vom aktuellen Verzeichnis aus einen erweiterten regulären Ausdruck verwenden, um nach allen Dateien zu suchen, die kein Standard-Dateisuffix enthalten (z. B. Dateinamen, die nicht auf .txt oder .c enden)?
Tippe zum Aufdecken →
Antwort
find . -type f -regextype egrep -not -regex '.*\.[[:alnum:]]{1,}$' Erklärung: -regextype egrip verwendet erweiterte reguläre Ausdrücke. -not -regex invertiert die Übereinstimmung. Das Muster .*\.[[:alnum:]]{1,}$ passt auf Dateinamen mit einem Punkt gefolgt von 1+ alphanumerischen Zeichen am Zeilenende (d. h. Dateisuffixe). -not zeigt alle Dateien, die dieses Muster NICHT erfüllen.
Frage
Der Befehl less ist der Standardpager für die Anzeige langer Textdateien. Durch Eingabe von / kann ein regulärer Ausdruck eingegeben werden, um zur ersten Übereinstimmung zu springen. Um an der aktuellen Dokumentposition zu bleiben und nur die Übereinstimmungen hervorzuheben: Welche Tastenkombination sollte bei der Suchabfrage eingegeben werden?
Tippe zum Aufdecken →
Antwort
Strg + K Erklärung: In less springt / zur ersten Übereinstimmung. Wenn man vor der Eingabe des regulären Ausdrucks Strg+K drückt, werden alle Übereinstimmungen im Dokument hervorgehoben, ohne dass die Position im Text geändert wird.
Frage
Wie wäre es mittels less möglich, die Ausgabe so zu filtern, dass nur Zeilen angezeigt werden, die einem regulären Ausdruck entsprechen?
Tippe zum Aufdecken →
Antwort
Durch Drücken von & und Eingabe des Suchbegriffs. Erklärung: In less zeigt & gefolgt von einem regulären Ausdruck nur die Zeilen an, die auf das Muster passen (Filtermodus). Mit & ohne Suchbegriff wird der Filter aufgehoben.
Textdateien mit regulären Ausdrücken durchsuchen – Teil 2
103.7.L2
- Kernkonzepte von **Reguläre Ausdrücke** verstehen
- Prüfungsrelevante Befehle und Konfigurationen beherrschen
- Typische Fehlerquellen erkennen und beheben
## Zusammenfassung
Diese Lektion behandelt das LPIC-Thema **Textdateien mit regulären Ausdrücken durchsuchen – Teil 2**. Das Thema gehört zum Bereich Reguläre Ausdrücke und ist Teil des offiziellen Prüfungsstoffs.
Im Fokus stehen die praktischen Grundlagen, die für die Zertifizierung essenziell sind. Wichtige Schwerpunkte sind: grep, sed, awk.
## Wichtige Befehle
- Inhalt folgt in der aktualisierten Version
## Prüfungstipps
- Lesen Sie die Manpages zu allen genannten Befehlen
- Üben Sie Befehle in einer virtuellen Maschine oder Container-Umgebung
- Achten Sie auf die Unterschiede zwischen Distributionen
## Weiterführende Links
- [LPI-Lernmaterial (offiziell)](https://www.lpi.org)
- [Linux Man Pages Online](https://man7.org/linux/man-pages/)
Quiz (4 Fragen)
Der Befehl last zeigt eine Liste der zuletzt eingeloggten Benutzer einschließlich ihrer Herkunfts-IPs. Wie würde der Befehl egrep verwendet werden, um die Ausgabe von last so zu filtern, dass nur die IPv4-Adresse angezeigt wird und alle zusätzlichen Informationen verworfen werden?
Erklärung: -o (only-matching) zeigt nur den übereinstimmenden Teil der Zeile an. Das Muster [0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3} extrahiert die IPv4-Adresse. last -i zeigt Remote-IPs an.
Welche Option sollte an grep übergeben werden, um die Ausgabe, die durch den mit der Option -print0 ausgeführten Befehl find erzeugt wird, korrekt zu filtern?
Erklärung: find -print0 trennt Dateinamen mit NUL-Zeichen statt Newlines (wichtig für Dateinamen mit Leerzeichen). grep -z (oder --null-data) behandelt den Input ebenfalls als mit NUL-Zeichen getrennte Datensätze.
Der Befehl uptime -s zeigt das letzte Datum an, an dem das System eingeschaltet wurde, wie in 2019-08-05 20:13:22. Was wird das Ergebnis des Befehls uptime -s | sed -e 's/(.*) (.*)/\1/' sein?
Erklärung: In sed müssen Klammern für Rückverweise mit Backslash escaped werden (\( und \)). Ohne Escaping werden sie als literale Klammern behandelt, was zu einem Fehler führt. Der korrekte Befehl wäre sed -e 's/\(.*\) \(.*\)/\1/'.
Welche Option sollte man grep geben, damit es übereinstimmende Zeilen zählt, anstatt diese anzuzeigen?
Erklärung: grep -c zählt die Anzahl der übereinstimmenden Zeilen pro Datei und gibt nur die Zahl aus, nicht den Zeilentext selbst.
✓ Quiz abgeschlossen! 🎉
/ richtig
Karteikarten (3)
Frage
Beschreiben Sie, wie Adressen in sed verwendet werden könnten, um nur das HTML-Element <body> und seinen Inhalt anzuzeigen.
Tippe zum Aufdecken →
Antwort
sed -n -e '<body>/<,</\body>/p' Erklärung: Die Adressen /<body>/,</\body>> definieren einen Bereich (von <body> bis </body>). -n unterdrückt die Standardausgabe; p gibt die übereinstimmenden Zeilen dennoch aus. Der Slash im schließenden Tag muss escaped werden (\/).
Frage
Welcher sed-Ausdruck entfernt alle Tags aus einem HTML-Dokument, wobei nur der gerenderte Text erhalten bleibt?
Tippe zum Aufdecken →
Antwort
sed -e 's<[^>]*>//g'' Erklärung: Das Muster <[^>]*> passt auf <, gefolgt von beliebigen Zeichen, die kein > sind ([^>]*), gefolgt von > — also ein HTML-Tag. Die Ersetzung durch eine leere Zeichenkette (//) bei g (global = alle Vorkommen pro Zeile) entfernt alle Tags.
Frage
Eine .ovpn-Vorlage enthält Platzhalter wie <ca>, ca.crt, </ca>, <cert>, client.crt usw. Wie würde sed modifiziert, um jeden Dateinamen (.crt oder .key) durch seinen tatsächlichen Dateiinhalt zu ersetzen?
Tippe zum Aufdecken →
Antwort
sed -r -e 's/(^[^.]*)\.(crt|key)$/cat \1.\2/e' < client.template > client.ovpn Erklärung: -r aktiviert erweiterte reguläre Ausdrücke. Das Muster (^[^.]*)\.(crt|key)$ fängt den Dateinamen (\1) und die Endung (\2) ein. Das Flag e am Ende der s-Anweisung weist sed an, den Ersatztext als Shell-Befehl auszuführen — hier wird cat \1.\2 (z. B. cat ca.crt) ausgeführt und der Dateiinhalt eingefügt.