Heim  >  Artikel  >  php教程  >  12 praktische Beispiele für den grep-Befehl unter Linux

12 praktische Beispiele für den grep-Befehl unter Linux

高洛峰
高洛峰Original
2016-12-13 14:38:481111Durchsuche

grep ist ein leistungsstarkes Tool zur Suche nach Dateimustern, das in jeder Linux-Distribution vorinstalliert ist. Wenn Ihr System aus irgendeinem Grund nicht vorinstalliert ist, können Sie es einfach über den Paketmanager Ihres Systems installieren (apt-get auf Debian/Ubuntu-Systemen und yum auf RHEl/CentOS/Fedora-Systemen).

$ sudo apt-get install grep #Debian/Ubuntu $ sudo yum install grep #RHEL/CentOS/Fedora

Ich finde, die Verwendung realer Beispiele aus der realen Welt bringt Sie involviert ist der einfachste Weg, an den grep-Befehl zu gelangen.

1. Dateien suchen und finden

Angenommen, Sie haben ein neues Ubuntu auf Ihrem Computer installiert und planen dann, Python zu deinstallieren. Sie durchsuchen das Internet nach Tutorials, stellen jedoch fest, dass zwei verschiedene Versionen von Python verwendet werden, und Sie wissen nicht, welche Version von Python Ihr Ubuntu-Installationsprogramm auf Ihrem System installiert hat und welche Module es installiert hat. Um dieses Problem zu lösen, führen Sie einfach den folgenden Befehl aus:

$ sudo dpkg -l |. 3-0ubuntu3.4 Interaktive objektorientierte Hochsprache (Version 2.7)
ii python2.7-minimal 2.7.3-0ubuntu3.4 Minimale Teilmenge der Python-Sprache (Version 2.7)

ii python-openssl 0.12-1ubuntu2.1 Python-Wrapper um die OpenSSL-Bibliothek

ii python-pam 0.4.2-12.2ubuntu4 Eine Python-Schnittstelle zur PAM-Bibliothek


Zuerst führen wir dpkg -l aus, um Sie aufzulisten .deb-Paket auf dem System installiert. Als nächstes verwenden wir eine Pipeline, um die Ausgabeergebnisse an den Befehl grep -ipython zu übertragen. Dieser Schritt kann einfach so erklärt werden, als würden wir die Ergebnisse an grep übertragen und dann alle Elemente herausfiltern, die Python enthalten, und die Ergebnisse zurückgeben. Die Option -i wird verwendet, um die Groß-/Kleinschreibung zu ignorieren, da bei grep die Groß-/Kleinschreibung beachtet wird. Es empfiehlt sich, die Option -i zu verwenden, es sei denn, Sie planen eine detailliertere Suche.

2. Dateien suchen und filtern

grep kann auch zum Suchen und Filtern in einer oder mehreren Dateien verwendet werden. Schauen wir uns ein Szenario wie dieses an:

Es liegt ein Problem mit Ihrem Apache-Webserver vor und Sie müssen eine von vielen professionellen Websites finden, um Fragen zu stellen. Die Person, die Ihnen freundlich geantwortet hat, hat Sie gebeten, den Inhalt Ihrer Datei /etc/apache2/sites-available/default-ssl einzufügen. Wenn Sie alle Kommentarzeilen entfernen könnten, wäre es dann für Sie, die Person, die Ihnen hilft, und alle anderen, die die Datei lesen, nicht einfacher, das Problem zu erkennen? Natürlich können Sie es ganz einfach machen! Machen Sie einfach Folgendes:

$ sudo grep -v "#" /etc/apache2/sites-available/default-ssl

Die Option -v dient dazu, den grep-Befehl anzugeben invertieren Sie die Ausgabe, d. h., dass keine übereinstimmenden Elemente ausgegeben werden, machen Sie das Gegenteil und geben Sie alle nicht übereinstimmenden Elemente aus. In diesem Beispiel sind die Zeilen mit # Kommentarzeilen (Anmerkung: Tatsächlich ist dieser Befehl nicht korrekt, und die Zeilen, die „#“ enthalten, sind nicht alle Kommentarzeilen. Informationen zur genauen Zuordnung der Kommentarzeilen finden Sie hier reguläre Ausdrücke).

3. Alle MP3-Dateien finden

Der grep-Befehl ist sehr nützlich, um Ergebnisse aus der Standardausgabe zu filtern. Angenommen, Sie haben einen Ordner voller Musikdateien in verschiedenen Formaten. Sie müssen alle Musikdateien im MP3-Format des Künstlers jayZ finden und dürfen keine gemischten Audiotitel enthalten. Sie können diese Magie vervollständigen, indem Sie den Befehl find in Kombination mit grep durch Pipes verwenden:

$ sudo find >

In diesem Beispiel verwenden wir den Befehl „find“, um alle Dateien mit dem Suffix .mp3 auszudrucken, leiten sie dann an grep -i weiter, um die Dateien mit dem Namen „JayZ“ zu filtern und auszudrucken, und leiten sie dann an grep weiter – vi zum Herausfiltern von Elementen, die „remix“ enthalten

35 praktische Beispiele für den Befehl „find“ unter Linux

4. Zeigen Sie die Zeilennummer vor oder nach der Suchzeichenfolge an

Die anderen beiden Optionen sind das Umschalten zwischen -A und -B, die zur Anzeige übereinstimmender Zeilen und Zeilennummern verwendet werden. Sie steuern die Anzahl der angezeigten Zeilen vor bzw. nach der Zeichenfolge. Zur Erklärung habe ich eine kleine Erinnerung gefunden Trick: -A=after, -B=before. >

5. Zeilennummern um die übereinstimmende Zeichenfolge drucken

Die Option -C des grep-Befehls ist der in Beispiel 4 sehr ähnlich, aber Die Zeilen vor oder nach der übereinstimmenden Zeichenfolge werden nicht gedruckt. Stattdessen werden Zeilen ausgegeben, die in beide Richtungen übereinstimmen (Anmerkung: Gleich wie der Speichertrick oben: -C=center, zentriert darauf): $ sudo ifconfig -C 2 lo

6. Anzahl der Übereinstimmungen berechnen

Diese Funktion ähnelt der Weiterleitung der Ausgabe von grep an den Zähler (wc-Programm). Die integrierte Option von grep kann den gleichen Zweck erreichen:

$ sudo ifconfig | Wenn ein Kompilierungsfehler auftritt, ist die Option -n des Befehls grep eine sehr nützliche Funktion. Sie kann Ihnen sagen, in welcher Zeile der Datei Sie suchen:

$ sudo grep -n „main“ setup .py

8. In allen Verzeichnissen Rekursive Suche in

Wenn Sie im aktuellen Ordner nach einer Zeichenfolge suchen möchten und es viele Unterverzeichnisse im aktuellen Ordner gibt, können Sie die Option -r angeben, um die rekursive Suche zu erleichtern: $ sudo grep -r "function" *

9. Führen Sie eine Suche mit exakter Übereinstimmung durch

Übergeben Sie die Option -w an den grep-Befehl, um eine Suche mit exakter Übereinstimmung in der Zeichenfolge durchzuführen (Anmerkung: Enthält das zu suchende Wort, keine Platzhalter). Wenn Sie beispielsweise Folgendes eingeben:

$ sudo ifconfig |. Darüber hinaus können Sie auch Folgendes versuchen:

$ sudo ifconfig |.

Bei der Suche nach dieser Übereinstimmung, wenn es keinen solchen separaten Suchbegriff gibt Worte, es wird nichts zurückgegeben.

10. Suche in Gzip-komprimierten Dateien

Wir möchten auch auf die abgeleiteten Anwendungen von grep achten. Das erste ist zgrep, das zcat sehr ähnlich ist und für gzip-komprimierte Dateien verwendet werden kann. Es verfügt über ähnliche Befehlsoptionen wie grep und wird auf die gleiche Weise verwendet:

$ sudo zgrep -i error /var/log/syslog.2.gz

11 Im file Passende reguläre Ausdrücke

egrep ist eine weitere abgeleitete Anwendung, die für „erweiterte globale reguläre Ausdrücke“ steht. Es erkennt weitere Metazeichen für reguläre Ausdrücke, z. B. at + ? | und (). Egrep ist ein sehr nützliches Tool bei der Suche nach Quellcodedateien. Es gibt auch andere Suchanforderungen für fragmentierte Codedateien, die solche Suchfunktionen erforderlich machen. Es kann mit der Option -E im grep-Befehl aktiviert werden.

$ sudo grep -E

12. Suche nach einer festen übereinstimmenden Zeichenfolge

fgrep wird verwendet, um in einer Datei oder Dateiliste nach einer Zeichenfolge mit festem Stil zu suchen. Die Funktion ist dieselbe wie grep -F. Eine häufige Verwendung von fgrep besteht darin, ihm eine Datei mit Mustern zu übergeben:

$ sudo fgrep -f file_full_of_patterns.txt file_to_search.txt

Dies ist nur der Anfang des grep-Befehls , Sie haben vielleicht bemerkt, dass es für die Umsetzung einer Vielzahl von Anforderungen äußerst nützlich ist. Zusätzlich zu dem einzeiligen Befehl, den wir ausführen, kann grep auch als Cron-Task oder als automatisches Shell-Skript zur Ausführung geschrieben werden. Seien Sie neugierig, experimentieren Sie mit den Optionen auf der Manpage und schreiben Sie einige Grep-Ausdrücke für Ihre Zwecke.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn