home-harmening:kommandoreferenz:dateiverwaltung:grep

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
home-harmening:kommandoreferenz:dateiverwaltung:grep [2025/02/04 13:14] charmeninghome-harmening:kommandoreferenz:dateiverwaltung:grep [2025/02/04 13:39] (aktuell) – [grep mit Pipes (|) kombinieren] charmening
Zeile 9: 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 "Fehler" logfile.txt </code> → Sucht nach dem Wort „Fehler“ in logfile.txt.+Sucht nach dem Wort „Fehler“ in logfile.txt. 
 +<code bash> grep "Fehler" logfile.txt </code>
 \\ \\
 ==== Wichtige Optionen ==== ==== Wichtige Optionen ====
Zeile 29: Zeile 30:
 \\ \\
 ==== Beispiele zur Nutzung von grep ==== ==== Beispiele zur Nutzung von grep ====
 +\\
 === Einfache Suche === === Einfache Suche ===
-<code bash> grep "root" /etc/passwd </code> → Sucht nach „root“ in der Datei /etc/passwd.+Sucht nach „root“ in der Datei /etc/passwd.\\ 
 +<code bash> grep "root" /etc/passwd </code>
 \\ \\
 === Groß-/Kleinschreibung ignorieren (-i) === === Groß-/Kleinschreibung ignorieren (-i) ===
-<code bash> grep -i "error" logfile.txt </code> → Findet „error“, „ERROR“, „Error“ usw.+Findet „error“, „ERROR“, „Error“ usw.\\ 
 +<code bash> grep -i "error" logfile.txt </code> 
 \\ \\
 === mgekehrte Suche (-v) === === mgekehrte Suche (-v) ===
-<code bash> grep -v "192.168.1.1" access.log </code> → Zeigt alle Zeilen, die nicht „192.168.1.1“ enthalten.+Zeigt alle Zeilen, die nicht „192.168.1.1“ enthalten.\\ 
 +<code bash> grep -v "192.168.1.1" access.log </code>
 \\ \\
 === Rekursive Suche in Verzeichnissen (-r) === === Rekursive Suche in Verzeichnissen (-r) ===
-<code bash> grep -r "TODO" /home/user/projekt </code> → Durchsucht alle Dateien in /home/user/projekt nach „TODO“.+Durchsucht alle Dateien in /home/user/projekt nach „TODO“.\\ 
 +<code bash> grep -r "TODO" /home/user/projekt </code>
 \\ \\
 === Anzahl der Treffer (-c) === === Anzahl der Treffer (-c) ===
-<code bash> grep -c "error" logfile.txt </code> → Gibt nur die Anzahl der Treffer aus.+Gibt nur die Anzahl der Treffer aus.\\ 
 +<code bash> grep -c "error" logfile.txt </code>
 \\ \\
 === Zeilennummern anzeigen (-n) === === Zeilennummern anzeigen (-n) ===
-<code bash> grep -n "MainFunction" code.c </code> → Gibt Zeilennummern aus, wo „MainFunction“ in code.c steht.+Gibt Zeilennummern aus, wo „MainFunction“ in code.c steht.\\ 
 +<code bash> grep -n "MainFunction" code.c </code>
 \\ \\
 === Nur Dateinamen mit Treffern anzeigen (-l) === === Nur Dateinamen mit Treffern anzeigen (-l) ===
-<code bash> grep -l "password" *.txt </code> → Zeigt nur die Namen der Dateien, die „password“ enthalten.+Zeigt nur die Namen der Dateien, die „password“ enthalten.\\ 
 +<code bash> grep -l "password" *.txt </code>
 \\ \\
 === Nur das gefundene Wort anzeigen (-o) === === Nur das gefundene Wort anzeigen (-o) ===
-<code bash> grep -o "WARN[0-9]*" logfile.txt </code> → Gibt nur die gefundenen Warncodes aus (WARN123, WARN456…).+Gibt nur die gefundenen Warncodes aus (WARN123, WARN456…).\\ 
 +<code bash> grep -o "WARN[0-9]*" logfile.txt </code>
 \\ \\
 === Ganze Wörter suchen (-w) === === Ganze Wörter suchen (-w) ===
-<code bash> grep -w "is" text.txt </code> → Findet „is“, aber nicht „this“ oder „his“.+Findet „is“, aber nicht „this“ oder „his“.\\ 
 +<code bash> grep -w "is" text.txt </code>
 \\ \\
 === Kontext um Treffer anzeigen (-A, -B, -C) === === Kontext um Treffer anzeigen (-A, -B, -C) ===
-<code bash> grep -A 3 "ERROR" logfile.txt </code> → Zeigt die Zeile mit „ERROR“ und die 3 Zeilen danach. +Zeigt die Zeile mit „ERROR“ und die 3 Zeilen danach.\\ 
-<code bash> grep -B 2 "Login failedauth.log </code> → Zeigt die Zeile mit „Login failed“ und die **2 Zeilen davor**. <code bash> grep -2 "Criticalsystem.log </code> → Zeigt die Treffer plus **2 Zeilen davor und danach**.+<code bash> grep -A 3 "ERRORlogfile.txt </code>  
 +\\ 
 +Zeigt die Zeile mit „Login failed“ und die **2 Zeilen davor**.\\ 
 +<code bash> grep -2 "Login failedauth.log </code> system.log /code> 
 +\\ 
 +Zeigt die Treffer plus **2 Zeilen davor und danach**. 
 +<code bash> grep -C 2 "Critical"</code>
 \\ \\
 ==== Reguläre Ausdrücke mit grep -E (Erweiterte Suche) ==== ==== Reguläre Ausdrücke mit grep -E (Erweiterte Suche) ====
 \\ \\
-Die -E Option erlaubt erweiterte reguläre Ausdrücke (entspricht egrep). +Die -E Option erlaubt erweiterte reguläre Ausdrücke (entspricht egrep).\\ 
-Regulärer Ausdruck Bedeutung +|**Regulärer Ausdruck**|**Bedeutung**| 
-. Beliebiges Zeichen (außer Zeilenumbruch) +|.|Beliebiges Zeichen (außer Zeilenumbruch)| 
-^ Beginn einer Zeile +|%%^%%|Beginn einer Zeile| 
-$ Ende einer Zeile +|$|Ende einer Zeile| 
-[abc] Entweder „a“, „b“ oder „c“ +|[abc]|Entweder „a“, „b“ oder „c“| 
-[a-z] Ein Kleinbuchstabe von „a“ bis „z“ +|[a-z]|Ein Kleinbuchstabe von „a“ bis „z“| 
-[^0-9] Kein Ziffernzeichen (0-9) +|%%[^0-9]%%|Kein Ziffernzeichen (0-9)| 
-* 0 oder mehr Vorkommen des vorherigen Zeichens +|*|0 oder mehr Vorkommen des vorherigen Zeichens| 
-+ 1 oder mehr Vorkommen des vorherigen Zeichens +|+|1 oder mehr Vorkommen des vorherigen Zeichens| 
-? 0 oder 1 Vorkommen +|?|0 oder 1 Vorkommen| 
-{n,m} Zwischen n und m Wiederholungen +|{n,m}|Zwischen n und m Wiederholungen| 
-foo|bar Findet „foo“ oder „bar“ +|foo\bar|Findet „foo“ oder „bar“| 
 +\\
 === Beispiele für reguläre Ausdrücke === === Beispiele für reguläre Ausdrücke ===
-<code bash> grep -E "^user[0-9]{2}" datei.txt </code> → Sucht nach Zeilen, die mit „user“ + **2 Ziffern** beginnen (`user01`, `user99`). <code bash> grep -E "error|fail|fatallogfile.txt </code> → Findet Zeilen mit „error“, „fail“ oder „fatal“. <code bash> grep -E "[A-Z]{3}[0-9]{4}" data.txt </code> → Findet Muster wie `ABC1234`, `XYZ5678`. +Sucht nach Zeilen, die mit „user“ + **2 Ziffern** beginnen (`user01`, `user99`). \\ 
- +<code bash> grep -E "^user[0-9]{2}datei.txt </code> 
-==== 5. grep mit Pipes (|) kombinieren ==== + \\ 
- +Findet Zeilen mit „error“, „fail“ oder „fatal“. \\ 
-grep wird oft mit anderen Kommandos kombiniert: +<code bash> grep -E "error|fail|fatal" logfile.txt </code> 
 +\\ 
 + Findet Muster wie `ABC1234`, `XYZ5678`. \\ 
 +<code bash> grep -E "[A-Z]{3}[0-9]{4}" data.txt </code> 
 +\\ 
 +====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 "firefox" </code> → Zeigt nur Firefox-Prozesse. +Zeigt nur Firefox-Prozesse. \\ 
 +<code bash> ps aux | grep "firefox" </code> 
 +\\
 === ls und grep: Dateien filtern === === ls und grep: Dateien filtern ===
-<code bash> ls -l | grep ".sh$" </code> → Zeigt nur Shell-Skripte (.sh am Ende).+Zeigt nur Shell-Skripte (.sh am Ende). \\ 
 +<code bash> ls -l | grep ".sh$" </code>
  
 === dmesg und grep: Kernel-Logs durchsuchen === === dmesg und grep: Kernel-Logs durchsuchen ===
-<code bash> dmesg | grep -i "usb" </code> → Zeigt nur USB-bezogene Meldungen.+\\ 
 +Zeigt nur USB-bezogene Meldungen. \\ 
 +<code bash> dmesg | grep -i "usb" </code>
  
-==== 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.