653 Stimmen

Farbiges grep - Anzeige der gesamten Datei mit hervorgehobenen Übereinstimmungen

Ich finde grep 's --color=always Flagge als äußerst nützlich erweisen. Allerdings gibt grep nur Zeilen mit Übereinstimmungen aus (es sei denn, Sie fragen nach Kontextzeilen). Da jede ausgegebene Zeile eine Übereinstimmung aufweist, bringt die Hervorhebung nicht so viel, wie sie könnte.

Ich würde wirklich gerne cat eine Datei und sehen Sie die gesamte Datei mit den hervorgehobenen Mustertreffern.

Gibt es eine Möglichkeit, wie ich grep anweisen kann, jede gelesene Zeile auszugeben, unabhängig davon, ob es eine Übereinstimmung gibt? Ich weiß, dass ich ein Skript schreiben könnte, um grep auf jeder Zeile einer Datei laufen zu lassen, aber ich war neugierig, ob dies mit Standard grep .

1voto

Andrew Magee Punkte 6243

Alternativ können Sie auch Der Silbersucher und tun

ag <search> --passthrough

1voto

Al Mamun Punkte 802

Ich verwende den folgenden Befehl für einen ähnlichen Zweck:

grep -C 100 searchtext file

Damit wird grep angewiesen, 100 * 2 Zeilen Kontext vor und nach dem markierten Suchtext auszugeben.

1voto

Wernsey Punkte 5342

Hier ist ein Shell-Skript, das die gsub-Funktion von Awk verwendet, um den gesuchten Text durch die richtige Escape-Sequenz zu ersetzen und ihn in leuchtendem Rot anzuzeigen:

#! /bin/bash
awk -vstr=$1 'BEGIN{repltext=sprintf("%c[1;31;40m&%c[0m", 0x1B,0x1B);}{gsub(str,repltext); print}' $2

Verwenden Sie es so:

$ ./cgrep pattern [file]

Leider verfügt es nicht über die gesamte Funktionalität von grep.

Weitere Informationen finden Sie in einem Artikel " Sie mögen also Farbe "im Linux Journal

1voto

Serhii Nadolynskyi Punkte 5113

Das mag wie ein schmutziger Hack erscheinen.

grep "^\|highlight1\|highlight2\|highlight3" filename

Das bedeutet: Übereinstimmung mit dem Anfang der Zeile (^) oder highlight1 oder highlight2 oder highlight3. Infolgedessen werden alle highlight*-Musterübereinstimmungen hervorgehoben, auch in derselben Zeile.

0voto

nik Punkte 12812

Okay, das ist eine Möglichkeit,

wc -l filename

gibt Ihnen die Anzahl der Zeilen an - sagen wir NN, dann können Sie

grep -C NN --color=always filename

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X