Zum Inhalt springen

Grep/Ausgabe: Unterschied zwischen den Versionen

Aus Foxwiki
Die Seite wurde neu angelegt: „== Ausgabe anpassen == === Treffer einfärben === Standardmäßig ist die Ausgabe von grep farblos * Für die Übersichtlichkeit ist es hilfreich, wenn du das gematchte Pattern in jeder Zeile farblich hervorhebst ==== --color ==== Hebt Treffer farblich hervor ==== Per default ==== ===== --color // bashrc alias? ===== Ich habe das per Default in meiner .bashrc/.zshrc * Wenn du dies auch willst, musst du nur die Zeile export GREP_OPTIONS='--color=auto'…“
 
K Textersetzung - „–“ durch „-“
 
(5 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 32: Zeile 32:


=== Trefferanzahl anzeigen ===
=== Trefferanzahl anzeigen ===
Die Anzahl aller Zeilen, die das Suchmuster beinhalten, kannst du dir mit -c oder –count ausgeben lassen
Die Anzahl aller Zeilen, die das Suchmuster beinhalten, kannst du dir mit -c oder -count ausgeben lassen
* Damit liefert grep die reine Anzahl, also z. B. “4″ für 4 Treffer zurück, sonst nichts
* Damit liefert grep die reine Anzahl, also beispielsweise "4″ für 4 Treffer zurück, sonst nichts


==== -c ====
==== -c ====
Zeile 53: Zeile 53:
=== Nur Dateinamen ausgeben lassen ===
=== Nur Dateinamen ausgeben lassen ===
Manchmal braucht man nur den/die Dateinamen, in denen der Suchstring gefunden wurde
Manchmal braucht man nur den/die Dateinamen, in denen der Suchstring gefunden wurde
* Das kannst du über die Option -l (kleines “L”) erreichen
* Das kannst du über die Option -l (kleines "L") erreichen


=== -l ===
=== -l ===
Zeile 106: Zeile 106:
Mach es dir zur Gewohnheit, immer alle Regular expressiones, die du verwendest, unter einem aussagekräftigen Dateinamen in einem bestimmten Verzeichnis zu speichern
Mach es dir zur Gewohnheit, immer alle Regular expressiones, die du verwendest, unter einem aussagekräftigen Dateinamen in einem bestimmten Verzeichnis zu speichern
* So sammelst du mit der Zeit ein komfortables, wiederverwendbares Regular expression-Kompendium
* So sammelst du mit der Zeit ein komfortables, wiederverwendbares Regular expression-Kompendium
[[Kategorie:Linux/Suchen]]
[[Kategorie:Linux/Befehl]]

Aktuelle Version vom 11. Mai 2025, 20:47 Uhr

Ausgabe anpassen

Treffer einfärben

Standardmäßig ist die Ausgabe von grep farblos

  • Für die Übersichtlichkeit ist es hilfreich, wenn du das gematchte Pattern in jeder Zeile farblich hervorhebst

--color

Hebt Treffer farblich hervor

Per default

--color // bashrc alias?

Ich habe das per Default in meiner .bashrc/.zshrc

  • Wenn du dies auch willst, musst du nur die Zeile
export GREP_OPTIONS='--color=auto'

in deiner Shell-Config-File einfügen

  • Falls dir die Farbe nicht gefällt, kannst du sie per
export GREP_COLOR='1;32'

nach Belieben ändern

  • Für eine andere Farbe einfach einen der Farbcodes in den Hochkommata ersetzen
Black 0;30 Dark Gray 1;30
Blue 0;34 Light Blue 1;34
Green 0;32 Light Green 1;32
Cyan 0;36 Light Cyan 1;36
Red 0;31 Light Red 1;31
Purple 0;35 Light Purple 1;35
Brown 0;33 Yellow 1;33
Light Gray 0;37 White 1;37

Trefferanzahl anzeigen

Die Anzahl aller Zeilen, die das Suchmuster beinhalten, kannst du dir mit -c oder -count ausgeben lassen

  • Damit liefert grep die reine Anzahl, also beispielsweise "4″ für 4 Treffer zurück, sonst nichts

-c

Anzeige der Anzahl Zeilen, in denen das Muster gefunden wurde

$ grep -c bash /etc/passwd
38

Zeilennummer anzeigen

Sinnvoll vor allem bei Sourcecode-Dateien ist die Option -n

  • Wenn du dem grep-Befehl diese Option mitgibst, wird vor jedes Match die Zeilennummer des Matches geschrieben

-n

Zeigt die Zeilennummer an, in der das Muster gefunden wurde

$ grep -n root /etc/passwd
1:root:x:0:0:root:/root:/bin/bash

Nur Dateinamen ausgeben lassen

Manchmal braucht man nur den/die Dateinamen, in denen der Suchstring gefunden wurde

  • Das kannst du über die Option -l (kleines "L") erreichen

-l

Nur Anzeige der Namen der Dateien, in denen das Muster gefunden wurde

$ grep -l tcp /etc/host*
/etc/hosts.allow
/etc/hosts.deny

Dateinamen ohne Treffer

-L

Auch gibt es Anwendungsfälle, in denen du nur die Dateinamen aufgelistet haben willst, in denen der Suchstring NICHT gefunden wurde

  • Dafür nutzt du die Option -L

Kontext anzeigen

-A [Anzahl]

Zeigt Anzahl Zeilen an, die der Zeile mit dem Muster folgen

grep -A 2 root /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/bin/bash
daemon:x:2:2:daemon:/sbin:/bin/bash

-B [Anzahl]

Zeigt Anzahl Zeilen an, die vor der Zeile mit dem Muster liegen

-C [Anzahl]

Anzahl Zeilen vor- und nach dem Treffer

Ausgabe unterdrücken

-s

Unterdrückt die Fehlerausgaben (Standardfehler); sinnvoll in Skripten

Muster aus Datei laden

Wer komplexer Suchmuster immer wieder verwendet, kann diese in Dateien speichern und im grep-Befehl per -f regexdatei einbinden

Beispiel

alle Zeilen mit Emailadressen aus einer Datei filtern

grep -E '([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5})' datei.txt

Den Regular expression ohne die einfachen Anführungsstriche in eine Datei schreiben:

echo '([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5})' > \ ~/snippets/regexes/email

Nun kannst du den Regular expression im obigen Beispiel mit dem File ersetzen:

grep -Ef ~/snippets/regexes/email datei.txt

Tipp

Mach es dir zur Gewohnheit, immer alle Regular expressiones, die du verwendest, unter einem aussagekräftigen Dateinamen in einem bestimmten Verzeichnis zu speichern

  • So sammelst du mit der Zeit ein komfortables, wiederverwendbares Regular expression-Kompendium