Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| home-harmening:kommandoreferenz:dateiverwaltung:grep [2025/02/04 13:11] – angelegt charmening | home-harmening:kommandoreferenz:dateiverwaltung:grep [2025/02/04 13:39] (aktuell) – [grep mit Pipes (|) kombinieren] charmening | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| ====== grep | Muster in Dateien und Ausgaben suchen ====== | ====== grep | Muster in Dateien und Ausgaben suchen ====== | ||
| - | + | Das Kommando grep (Global Regular Expression Print) wird verwendet, um Textmuster in Dateien oder der Standardausgabe zu durchsuchen.\\ | |
| - | Das Kommando grep (Global Regular Expression Print) wird verwendet, um Textmuster in Dateien oder der Standardausgabe zu durchsuchen. | + | Es unterstützt einfache Zeichenfolgen, |
| - | Es unterstützt einfache Zeichenfolgen, | + | \\ |
| - | + | ==== Grundlegende Syntax ==== | |
| - | ==== 1. Grundlegende Syntax ==== | + | |
| <code bash> grep [OPTIONEN] " | <code bash> grep [OPTIONEN] " | ||
| Zeile 10: | Zeile 9: | ||
| DATEI: Die Datei(en), in denen gesucht wird. | DATEI: Die Datei(en), in denen gesucht wird. | ||
| Falls keine Datei angegeben wird, liest grep aus der Standardeingabe (stdin). | Falls keine Datei angegeben wird, liest grep aus der Standardeingabe (stdin). | ||
| - | + | \\ | |
| - | Beispiel: | + | **Beispiel:**\\ |
| - | <code bash> grep " | + | Sucht nach dem Wort „Fehler“ in logfile.txt. |
| - | + | <code bash> grep " | |
| - | ==== 2. Wichtige Optionen ==== | + | \\ |
| - | Option Beschreibung | + | ==== Wichtige Optionen ==== |
| - | -i Ignoriert Groß- und Kleinschreibung | + | |**Option**|**Beschreibung**| |
| - | -v Zeigt alle Zeilen, die nicht das Muster enthalten | + | |-i|Ignoriert Groß- und Kleinschreibung| |
| - | -r Durchsucht alle Dateien in einem Verzeichnis rekursiv | + | |-v|Zeigt alle Zeilen, die nicht das Muster enthalten| |
| - | -c Gibt die Anzahl der Treffer (Zeilen) aus | + | |-r|Durchsucht alle Dateien in einem Verzeichnis rekursiv| |
| - | -n Zeigt die Zeilennummern der Treffer an | + | |-c|Gibt die Anzahl der Treffer (Zeilen) aus| |
| - | -l Zeigt nur die Namen der Dateien an, die das Muster enthalten | + | |-n|Zeigt die Zeilennummern der Treffer an| |
| - | -o Gibt nur den gefundenen Text aus (nicht die ganze Zeile) | + | |-l|Zeigt nur die Namen der Dateien an, die das Muster enthalten| |
| - | -w Sucht nach exakten Wortübereinstimmungen | + | |-o|Gibt nur den gefundenen Text aus (nicht die ganze Zeile)| |
| - | -A N Zeigt N Zeilen nach dem Treffer an | + | |-w|Sucht nach exakten Wortübereinstimmungen| |
| - | -B N Zeigt N Zeilen vor dem Treffer an | + | |-A N|Zeigt N Zeilen nach dem Treffer an| |
| - | -C N Zeigt N Zeilen vor und nach dem Treffer an | + | |-B N|Zeigt N Zeilen vor dem Treffer an| |
| - | --color=auto Hebt Treffer farbig hervor | + | |-C N|Zeigt N Zeilen vor und nach dem Treffer an| |
| - | + | |--color=auto|Hebt Treffer farbig hervor| | |
| - | ==== 3. Beispiele zur Nutzung von grep ==== | + | \\ |
| - | + | ==== Beispiele zur Nutzung von grep ==== | |
| - | === 3.1 Einfache Suche === | + | \\ |
| - | <code bash> grep " | + | === Einfache Suche === |
| - | + | Sucht nach „root“ in der Datei / | |
| - | === 3.2 Groß-/ | + | <code bash> grep " |
| - | <code bash> grep -i " | + | \\ |
| - | + | === Groß-/ | |
| - | === 3.3 Umgekehrte | + | Findet „error“, |
| - | <code bash> grep -v " | + | <code bash> grep -i " |
| - | + | \\ | |
| - | === 3.4 Rekursive Suche in Verzeichnissen (-r) === | + | === mgekehrte |
| - | <code bash> grep -r " | + | Zeigt alle Zeilen, die nicht „192.168.1.1“ enthalten.\\ |
| - | + | <code bash> grep -v " | |
| - | === 3.5 Anzahl der Treffer (-c) === | + | \\ |
| - | <code bash> grep -c " | + | === Rekursive Suche in Verzeichnissen (-r) === |
| - | + | Durchsucht alle Dateien in / | |
| - | === 3.6 Zeilennummern anzeigen (-n) === | + | <code bash> grep -r " |
| - | <code bash> grep -n " | + | \\ |
| - | + | === Anzahl der Treffer (-c) === | |
| - | === 3.7 Nur Dateinamen mit Treffern anzeigen (-l) === | + | Gibt nur die Anzahl der Treffer aus.\\ |
| - | <code bash> grep -l " | + | <code bash> grep -c " |
| - | + | \\ | |
| - | === 3.8 Nur das gefundene Wort anzeigen (-o) === | + | === Zeilennummern anzeigen (-n) === |
| - | <code bash> grep -o " | + | Gibt Zeilennummern aus, wo „MainFunction“ in code.c steht.\\ |
| - | + | <code bash> grep -n " | |
| - | === 3.9 Ganze Wörter suchen (-w) === | + | \\ |
| - | <code bash> grep -w " | + | === Nur Dateinamen mit Treffern anzeigen (-l) === |
| - | + | Zeigt nur die Namen der Dateien, die „password“ enthalten.\\ | |
| - | === 3.10 Kontext um Treffer anzeigen (-A, -B, -C) === | + | <code bash> grep -l " |
| - | <code bash> grep -A 3 " | + | \\ |
| - | <code bash> grep -B 2 "Login failed" | + | === Nur das gefundene Wort anzeigen (-o) === |
| - | + | Gibt nur die gefundenen Warncodes aus (WARN123, WARN456…).\\ | |
| - | ==== 4. Reguläre Ausdrücke mit grep -E (Erweiterte Suche) ==== | + | <code bash> grep -o " |
| - | + | \\ | |
| - | Die -E Option erlaubt erweiterte reguläre Ausdrücke (entspricht egrep). | + | === Ganze Wörter suchen (-w) === |
| - | Regulärer Ausdruck Bedeutung | + | Findet „is“, aber nicht „this“ oder „his“.\\ |
| - | . Beliebiges Zeichen (außer Zeilenumbruch) | + | <code bash> grep -w " |
| - | ^ Beginn einer Zeile | + | \\ |
| - | $ Ende einer Zeile | + | === Kontext um Treffer anzeigen (-A, -B, -C) === |
| - | [abc] Entweder „a“, „b“ oder „c“ | + | Zeigt die Zeile mit „ERROR“ und die 3 Zeilen danach.\\ |
| - | [a-z] Ein Kleinbuchstabe von „a“ bis „z“ | + | <code bash> grep -A 3 "ERROR" |
| - | [^0-9] Kein Ziffernzeichen (0-9) | + | \\ |
| - | * 0 oder mehr Vorkommen des vorherigen Zeichens | + | Zeigt die Zeile mit „Login failed“ und die **2 Zeilen davor**.\\ |
| - | + 1 oder mehr Vorkommen des vorherigen Zeichens | + | <code bash> grep -B 2 "Login failed" |
| - | ? 0 oder 1 Vorkommen | + | \\ |
| - | {n, | + | Zeigt die Treffer plus **2 Zeilen davor und danach**. |
| - | foo|bar Findet „foo“ oder „bar“ | + | <code bash> grep -C 2 " |
| + | \\ | ||
| + | ==== Reguläre Ausdrücke mit grep -E (Erweiterte Suche) ==== | ||
| + | \\ | ||
| + | Die -E Option erlaubt erweiterte reguläre Ausdrücke (entspricht egrep).\\ | ||
| + | |**Regulärer Ausdruck**|**Bedeutung**| | ||
| + | |.|Beliebiges Zeichen (außer Zeilenumbruch)| | ||
| + | |%%^%%|Beginn einer Zeile| | ||
| + | |$|Ende einer Zeile| | ||
| + | |[abc]|Entweder „a“, „b“ oder „c“| | ||
| + | |[a-z]|Ein Kleinbuchstabe von „a“ bis „z“| | ||
| + | |%%[^0-9]%%|Kein Ziffernzeichen (0-9)| | ||
| + | |*|0 oder mehr Vorkommen des vorherigen Zeichens| | ||
| + | |+|1 oder mehr Vorkommen des vorherigen Zeichens| | ||
| + | |?|0 oder 1 Vorkommen| | ||
| + | |{n,m}|Zwischen n und m Wiederholungen| | ||
| + | |foo\bar|Findet „foo“ oder „bar“| | ||
| + | \\ | ||
| === Beispiele für reguläre Ausdrücke === | === Beispiele für reguläre Ausdrücke === | ||
| - | <code bash> grep -E " | + | Sucht nach Zeilen, die mit „user“ + **2 Ziffern** beginnen (`user01`, `user99`). |
| - | + | <code bash> grep -E "^user[0-9]{2}" | |
| - | ==== 5. grep mit Pipes (|) kombinieren ==== | + | \\ |
| - | + | Findet Zeilen mit „error“, | |
| - | grep wird oft mit anderen Kommandos kombiniert: | + | <code bash> grep -E " |
| + | \\ | ||
| + | | ||
| + | <code bash> grep -E " | ||
| + | \\ | ||
| + | ====grep mit Pipes (|) kombinieren ==== | ||
| + | grep wird oft mit anderen Kommandos kombiniert.\\ | ||
| + | \\ | ||
| === ps und grep: Laufende Prozesse filtern === | === ps und grep: Laufende Prozesse filtern === | ||
| - | <code bash> ps aux | grep " | + | Zeigt nur Firefox-Prozesse. \\ |
| + | <code bash> ps aux | grep " | ||
| + | \\ | ||
| === ls und grep: Dateien filtern === | === ls und grep: Dateien filtern === | ||
| - | <code bash> ls -l | grep " | + | Zeigt nur Shell-Skripte (.sh am Ende). \\ |
| + | <code bash> ls -l | grep " | ||
| === dmesg und grep: Kernel-Logs durchsuchen === | === dmesg und grep: Kernel-Logs durchsuchen === | ||
| - | <code bash> dmesg | grep -i " | + | \\ |
| + | Zeigt nur USB-bezogene Meldungen. \\ | ||
| + | <code bash> dmesg | grep -i " | ||
| - | ==== 6. Fazit ==== | ||
| - | grep ist ein extrem nützliches Werkzeug für die Textsuche in Linux. | ||
| - | Mit den verschiedenen Optionen kann man gezielt nach bestimmten Mustern suchen und den Kontext der Treffer erweitern. | ||