GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie man den Befehl „grep“ gut nutzt

​Linux- und UNIX-Systeme verfügen über einen Shell-Befehl namens „grep“. Dies sucht einfach nach einem bestimmten Text oder Muster in einer Datei oder einem ganzen Verzeichnis. Die häufigste Verwendung ist das schnelle Durchsuchen einer Datei nach Vorkommen eines Musters, das in Klartext oder in Form eines regulären Ausdrucks vorliegen kann.

Hier werden die verwendeten Muster eher einfacher Text als reguläre Ausdrücke sein. ​Dieser Artikel zeigt Ihnen, wie Sie grep verwenden, wenn Sie Textdateien nach einem oder mehreren Mustern durchsuchen. Wie Sie Zeilen mit bestimmten Mustern aus Ihrer Suche entfernen und wie Sie mehrere grep-Befehle mit Pipes für eine erweiterte Filterung ausführen.

Grundlegender Überblick über „grep“

Sehen Sie sich die Terminalausgabe für diese Befehle an:

/etc$ grep unix group
/etc$ grep -n unix group
/etc$ grep -w unix group
/etc$ grep -r -s unix . 

In diesem Screenshot verwende ich grep, um in der Datei /etc/group nach dem Wort „unix“ zu suchen. Als Ergebnis werden alle Vorkommen von unix_allsort (Benutzername für diesen Computer) zurückgegeben. Der zweite Befehl tat dasselbe, aber mit dem Parameter -n zeigt er an, in welcher Zeile das Muster in einer Datei gefunden wurde.

Der dritte Befehl ist etwas anders mit dem Parameter „-w“, der grep anweist, ein ganzes Wort statt eines einfachen Textstücks zu finden. Da die Gruppendatei „unix“ nicht als ganzes Wort enthielt, gab es keine Ausgabe.

Der vierte Befehl ist anders. Der erste Parameter, ‚-r‘, weist grep an, ein Verzeichnis rekursiv zu durchsuchen. Das Verzeichnis ist in diesem Fall das aktuelle (/etc), gekennzeichnet durch das ‚.‘. Der nächste Parameter, ‚-s‘, weist grep an, keine Fehler wie „Permission Denied“-Fehler an die Ausgabe zu melden, um die Ausgabe nicht mit Fehlern zu verschmutzen. Der vierte grep-Befehl listet also alle Vorkommen von „unix“ in allen Dateien in /etc und seinen Unterverzeichnissen auf, wobei alle Fehler einfach ignoriert werden.

Mehrere Muster

Um nach mehr als einem Muster zu suchen, erstellen Sie einfach eine Textdatei mit einer Liste von Mustern, eins pro Zeile, um in einer Datei oder einem Verzeichnis zu suchen, und verwenden Sie den Parameter -f, um die Datei mit den Mustern zu laden. $ grep -f ~/groups.txt /etc/group

Diese Datei enthält diese Suchmuster:

unix_allsort
video
sudo

Alle Zeilen, die mindestens eines dieser Muster enthalten, werden in der Terminalausgabe angezeigt.

Umleitungsausgabe

Denken Sie daran, dass die Verwendung von grep für eine große Datei oder sogar mehrere Dateien viel Ausgabe erzeugen kann. Es ist also eine gute Sache, die Ausgabe an den Befehl „weniger“ zu leiten, damit Sie die gesamte Ausgabe durchblättern können. $ grep -r -n -f filter.txt Ressourcen/js | less ​Oder leiten Sie die Ausgabe in eine Textdatei um, um sie später anzuzeigen. $ grep -r -n -f filter.txt resources/js> ~/result.txt  

Etwas ein bisschen Fortgeschritteneres

Es gibt einen Trick, den ich manchmal mit Pipes verwende, um nach Mustern zu suchen und auch unerwünschte Ausgaben herauszufiltern. Das Weiterleiten der Ausgabe von grep zur Anzeige in „weniger“ war ein Beispiel.

Zwei Beispiele, die das Kernel-Protokoll (/var/log/kern.log) verwenden. Schauen Sie sich dieses Bild an:

Ich habe grep verwendet, um alle Zeilen aufzulisten, die das ganze Wort „pci“ enthalten (verwendete den Parameter -w, um nur ganze Wörter abzugleichen), und die Ausgabe an einen anderen grep-Befehl weitergeleitet, um alle Muster herauszufiltern, die ich nicht wollte in der Ausgabe zu sehen.

Die Muster, die ich herausfilterte, waren „ohci-pci“ und „ehci-pci“.

In diesem Bild habe ich zuerst die Zeilen herausgefiltert, die Muster enthielten, die ich nicht wollte, und dann die Ausgabe nach dem gesucht, was ich wollte. Ich habe auch ein weiteres Muster zum Herausfiltern hinzugefügt, „pci=nocrs“. Es gibt mehr Funktionen in grep als hier behandelt werden. Wenn Sie also vorhaben, grep regelmäßig zu verwenden, nehmen Sie sich die Zeit, zu recherchieren, was es kann und wie es besser werden kann benutze es. Sehen Sie sich auch pdfgrep an, um PDF-Dateien zu durchsuchen.

Schlussfolgerung

Ein Tool wie grep ist in der Tat äußerst nützlich, um nicht zu sagen unverzichtbar, um eine Vielzahl von Textdateien, Skripten und insbesondere Protokollen mit erheblicher Leichtigkeit nach bestimmten Mustern zu durchsuchen. Sie können nach einem oder mehreren Mustern in einer einzelnen Datei oder vielen Dateien suchen oder sie verwenden, um die Zeilen aus den Dateien herauszufiltern, die diese Muster enthalten.

Sie können sogar Pipes für kompliziertere verwenden Suchen und Filtern mit grep. Es lohnt sich, mehr über diesen hervorragenden Befehl zu erfahren, insbesondere über einige seiner erweiterten Funktionen.


Linux
  1. So verwenden Sie den Linux-Grep-Befehl

  2. So verwenden Sie Telnet unter Windows

  3. So verwenden Sie den Grep-Befehl, um Text in Dateien zu finden

  4. So verwenden Sie den Su-Befehl unter Linux

  5. So bringen Sie den Befehl grep dazu, die gesamte übereinstimmende Zeile zurückzugeben

So verwenden Sie den grep-Befehl unter Debian 10

So verwenden Sie den Befehl sysctl unter Linux

WIE MAN DEN SCHWANZBEFEHL VERWENDET

So verwenden Sie den PS-Befehl

So verwenden Sie den TOP-Befehl

So verwenden Sie grep unter Linux