Einer der leistungsfähigsten und am häufigsten verwendeten Befehle in der Shell ist grep. Es sucht in einer Eingabedatei und passt Zeilen an, in denen das angegebene Muster gefunden wird. Standardmäßig werden alle übereinstimmenden Muster auf stdout gedruckt, das normalerweise Terminal ist. Wir können die übereinstimmende Ausgabe auch an andere Streams wie file.
umleitenDie grundlegende Verwendung von grep ist dies:
$ grep "some text" file.txt
grep ist in der Lage, den übereinstimmenden String in seiner Ausgabe farblich hervorzuheben. Aber standardmäßig ist diese Option deaktiviert.
$ grep abc a_file.txt abcdef
Die —-Farbe Der Parameter weist grep an, die Suchbegriffe in der Ausgabe einzufärben, wodurch sie sich von all dem anderen Text in der Zeile abheben. Mit GREP_COLOR wählen Sie die gewünschte Farbe aus Umgebungsvariable:export GREP_COLOR=36 ergibt Cyan, und export GREP_COLOR=32 ergibt Limonengrün.
Es stehen Ihnen 3 Farboptionen zur Verfügung:
- –color=auto
- –color=immer
- –color=nie
Mit color=always färbt es den übereinstimmenden String ein.
$ grep --color=always abc a_file.txt abcdef
Sehr oft möchten Sie die Ausgabe durchblättern:
$ grep --color=always abc a_file.txt | less ESC[01;31mabcESC[00mdef (END)
Das Problem ist, dass less diese Steuerzeichen standardmäßig nicht versteht. Sie müssen den Parameter -R verwenden.
$ grep --color=always abc a_file.txt |less -R abcdef
Verwenden Sie alternativ more.
$ grep --color=always abc a_file.txt | more abcdef
Ein weiteres problematisches Szenario ist, wenn Sie die grep-Ausgabe in einer Datei speichern möchten. Die Ausgabedatei enthält diese Steuerzeichen.
$ grep --color=always abc a_file.txt > myoutput.txt $ less myoutput.txt ESC[01;31mabcESC[00mdef myoutput.txt (END)
Mit color=auto zeigt es Farbe in der Ausgabe an, es sei denn, die Ausgabe wird an einen Befehl geleitet oder an eine Datei umgeleitet.
Schließlich können Sie den Farbparameter in einer grep-spezifischen Umgebungsvariablen angeben. Dann müssen Sie es nicht in die Befehlszeile eingeben.
$ export GREP_OPTIONS='--color=always'
Schlussbemerkung
Der grep-Befehl ist einer der beständigsten und leistungsstärksten im Terminal-Arsenal. Die Prämisse ist einfach:Bei einer oder mehreren Dateien werden alle Zeilen in diesen Dateien ausgegeben, die einem bestimmten Muster regulärer Ausdrücke entsprechen. Um das übereinstimmende Muster hervorzuheben, verwenden Sie die Option -color. Während die Optionsposition keine Rolle spielt, ist es üblich, Optionen zuerst zu platzieren.