Kann grep passenden Text hervorheben, ohne den Dateiinhalt auszublenden?


8

Ich benutze häufig grep‚s Kontext Kommandozeilenoptionen ( -A, -B, und -C), aber gelegentlich mag ich die ganze Datei anzuzeigen passenden Ausdrücke hervorgehoben. Um dies zu erreichen, spezifiziere ich derzeit einfach -C 999999999, aber das scheint albern.

Gibt es eine Option in OS X grep, mit der ich die Matching- und Colorizing-Funktionen von grep problemlos nutzen kann, ohne Dateiinhalte auszublenden?


1
Ich sage grepexplizit "OS X ist gebündelt ", weil ich weiß, dass dies BSD ist grep, und ich würde lieber nicht die gesamten Coreutils von GNU installieren, vorausgesetzt, GNU grephat dies eingebaut.
Jason Salaz

1
Ich glaube nicht, dass der gebündelte Grep dazu in der Lage ist. OTOH könnte man alias grep='/usr/bin/grep -C 999999999'in interaktiven Shells und vergessen.
Nohillside

1
Dies ist keine dauerhafte Änderung :). (Übersetzung: alias grepall='/usr/bin/grep -C 999999999')
Jason Salaz

Antworten:


16

Ich glaube nicht, dass es in grep eine einfache Option gibt, aber das scheint gut zu funktionieren. Von https://stackoverflow.com/a/981831

grep --color -E "pattern|$" file

Das |$am Ende des regulären Ausdrucks lässt grep Muster ODER Zeilenende finden. Diese können jedoch nicht hervorgehoben werden, sodass nur das Muster farbig wird.


1
Ebenfalls; -E "pattern.*|$"wird bis zum Ende der Zeile hervorgehoben.
Stimmen

Zum Beispiel:ls /bin/ /usr/bin/ |sort |grep --colour -nE '/.*|$'
Stimmen

6

Angenommen, Sie möchten die Datei selbst lesen, wobei die Bits hervorgehoben sind, ist weniger das bessere Werkzeug für den Job. less yourfile, geben Sie /Ihr Muster ein und drücken Sie die Eingabetaste. ngeht zum nächsten Spiel und spacezur nächsten Seite.

Alternativ hat ack einen --passthruModus, der macht, was Sie wollen. ack ist so wahnsinnig nützlich, dass es sich lohnt, es sich anzusehen.


Ich liebe diese Antwort und kann irgendwann zu ack wechseln. Aber in der Zwischenzeit ist grep so wahnsinnig in meinem Gehirn verwurzelt, dass es schwierig ist, einen Wechsel vorzunehmen. Aber danke für diese wunderbare Alternative.
Jason Salaz

2

Die Einstellung -Cauf eine negative Ganzzahl scheint gleichbedeutend mit der Einstellung einer beliebig großen Zahl zu sein.

grep something --color -C -1 *.txt

Aber wie bei so etwas wie -C 9999999, wenn die Datei mehrere Übereinstimmungen hat, können einige Zeilen mehrmals gedruckt werden.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.