Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung | |||
lpi1:regulaere_ausdruecke [2019/01/09 07:53] |
lpi1:regulaere_ausdruecke [2024/11/21 17:23] (aktuell) |
||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ===== buntes grep ===== | ||
+ | Kurzbefehl für buntes ''egrep'' einrichten: | ||
+ | alias g='grep -E --color=auto' | ||
+ | == Beispiel == | ||
+ | g home /etc/passwd | ||
+ | ===== Metazeichen ===== | ||
+ | Diese Übersicht ist nicht vollständig. Vollständige Übersichten gibt es z.B. hier: | ||
+ | man grep | ||
+ | |||
+ | ==== Anker ==== | ||
+ | |''^''|Zeilenanfang| | ||
+ | |''$''|Zeilenende| | ||
+ | |||
+ | === Beispiel === | ||
+ | Alle Nutzer mit ''bash'' als Shell: | ||
+ | grep -E --color 'bash$' /etc/passwd | ||
+ | |||
+ | ==== Zeichenauswahl ==== | ||
+ | |''.''| ein beliebiges Zeichen | | ||
+ | |''[aeiou]''| Eines der Zeichen a, e, i, o oder u | | ||
+ | |''[a-z]'' | Ein ASCII-Kleinbuchstabe | | ||
+ | |''[0-9A-Fa-f]'' | Ein Hexadezimalziffer | | ||
+ | |''[^aeiou]''| Ein Zeichen, aber nicht a, e, i, o oder u| | ||
+ | |''[^0-9A-Fa-f]'' | **keine** Hexadezimalziffer | | ||
+ | |||
+ | ==== Wiederholungszeichen ==== | ||
+ | |''{n,m}''| mindestens n-Mal, maximal m-Mal| | ||
+ | |''{n}''|genau n-Mal| | ||
+ | |''?''| 0 oder 1 mal, entspricht: ''{0,1}''| | ||
+ | |''*''| 0 oder mehr mal, entspricht: ''{0,}''| | ||
+ | |''+''| 1 oder mehr mal, entspricht: ''{1,}''| | ||
+ | |||
+ | === Beispiel === | ||
+ | Alle Nutzernamen: | ||
+ | grep -E --color -o '^[^:]+' /etc/passwd | ||
+ | |||
+ | ==== gruppieren / kopieren ==== | ||
+ | |''(…)''|Bereich der kopiert werden soll| | ||
+ | |''\1''|Kopie einfügen| | ||
+ | |||
+ | Alle Nutzer deren Name nicht im Namen ihres Heimatverzeichnises enthalten ist: | ||
+ | grep -vE '^([^:]+):x:[0-9]+:[0-9]+:[^:]*:[^:]*\1' /etc/passwd | ||
+ | |||
+ | ====== sed ====== | ||
+ | |||
+ | ==== Suchen und ersetzen ==== | ||
+ | Suchen und ersetzen mit sed in 3 Schritten: | ||
+ | |||
+ | Anzeigen, was geändert würde: | ||
+ | sed -rn 's/bash$/fish/p' /etc/passwd | ||
+ | |||
+ | Komplette Datei inkl. Änderungen anzeigen: | ||
+ | sed -r 's/bash$/fish/' /etc/passwd | ||
+ | |||
+ | Datei tatsächlich ändern: | ||
+ | cp /etc/passwd . | ||
+ | sed -ir 's/bash$/fish/' passwd | ||
+ | |||
+ | ==== Zeilen löschen ==== | ||
+ | sed -e '3d' namen | ||
+ | sed -e '3,5d' namen | ||
+ | sed -e '/Johann/d' namen | ||
+ | |||
+ | ====== weiterführende Links ====== | ||
+ | Einführung in Reguläre Ausdrücke: | ||
+ | * http://www.regenechsen.de | ||
+ | |||
+ | Tutorials und Referenz: | ||
+ | * http://regular-expressions.info | ||
+ | |||
+ | Hier gibt es ein nettes Tool um regular expressions zu bauen und zu testen: | ||
+ | * http://erik.eae.net/playground/regexp/regexp.html | ||
+ | |||
+ | Hier ein Tutorial von Heiko Baur: | ||
+ | * http://www.belbardonisakel.de/slides/regexp.pdf | ||
+ | |||
+ | Editor für Reguläre Ausdrücke: | ||
+ | * https://regex101.com/ | ||
+ | |||
+ | RegEx Kreuzworträtsel | ||
+ | * https://regexcrossword.com/challenges/beginner/puzzles/1 |