Verstehen des grep-Befehls mit praktischen Beispielen zum einfachen Filtern und Anzeigen des Dateiinhalts
GREP
steht für „Global Regular Expression Print“. Es ist ein nützliches Befehlszeilen-Dienstprogramm, das von Linux bereitgestellt wird, um nach der Textzeile zu suchen, die dem vom Benutzer bereitgestellten Muster entspricht.
grep
nimmt die Eingabe vom Benutzer in Form von Zeichenfolgen oder Wörtern entgegen, die der Benutzer in einer bestimmten Datei suchen möchte. Der Befehl überprüft dann die vom Benutzer angegebene Datei auf dieses Muster und gibt dann die Zeilen zurück, die dem bereitgestellten Muster entsprechen.
Es leistet hervorragende Arbeit, indem es den Inhalt einer Datei filtert, wodurch unsere Aufgabe erleichtert wird, bestimmte Inhalte in einzelnen oder mehreren Dateien gleichzeitig zu durchsuchen.
Lassen Sie uns in diesem Artikel die Funktionsweise des grep
Befehl mit einigen praktischen Beispielen im Detail.
Optionen erhältlich mit grep
Befehl
Dies sind einige der grundlegenden Optionen, die Sie häufig mit dem grep
Befehl.
Möglichkeit | Beschreibung |
-ich | Für eine Suche ohne Beachtung der Groß-/Kleinschreibung |
-R | Um rekursiv nach allen Dateien im angegebenen Verzeichnis und seinen Unterverzeichnissen zu suchen |
-C | So zeigen Sie an, wie oft eine Zeichenfolge insgesamt angezeigt wird |
-v | Nicht übereinstimmende Zeilen anzeigen |
-w | Filtern Sie nach diesem speziellen Wort, das separat verwendet wird |
Verwendung der grep
Befehl
grep
Befehl wird normalerweise mit der Pipe verwendet (|
) Dienstprogramm. Es kann mit der Shell-Pipe implementiert werden, wenn Sie es mit einigen anderen Linux-Befehlen verwenden möchten. Obwohl, grep
kann auch einzeln ohne das Rohr verwendet werden (|
) Dienstprogramm.
Sehen wir uns einige der grundlegenden Syntaxen der grep
Befehl mit und ohne Pipe-Dienstprogramm.
Lassen Sie mich Ihnen zuerst die Beispieltextdatei zeigen, die ich verwenden werde, um das zu veranschaulichen grep
Befehl.
INDIEN IST EIN SCHÖNES LAND DER FRIEDENSLIEBIGEN MENSCHEN. Indien steht auf den drei Säulen Legislative, Exekutive und Judikative. Indien ist ein wunderschönes Land friedliebender Menschen. Indien kümmert sich um die Menschen, da seine Ressource kartesische Koordinaten Bedeutung aller kartesischen Koordinaten hat. Es folgen zwei leere Zeilen. Die Verwendung eines Ochsenkarrens ist im Dorf für die landwirtschaftlichen Arbeiten ein alltäglicher Anblick. Dies ist das Ende der Beispieldatei.
grep
verwendet mit Rohr ( | )Dienstprogramm
grep
Der Befehl kann zusammen mit anderen Linux-Befehlen mithilfe der Shellpipes implementiert werden. Wie, mit dem Katze
Befehl, um den Inhalt der Datei anzuzeigen, aber gleichzeitig die Ausgabe mit dem grep
Befehl, um nur den Inhalt anzuzeigen, den Sie sehen möchten. Dies wird klarer, wenn wir das Beispiel durchgehen.
Syntax:
[Befehl] | grep [Zeichenfolge]
Beispiel:
cat sample.txt | grep gesetzgeber
Hier habe ich die Katze
Befehl, um einige Zeilen aus der Datei „sample.txt“ anzuzeigen. Es sollen nur die Zeilen angezeigt werden, die das Wort „Gesetzgeber“ enthalten und die restlichen Zeilen ignorieren.
Ausgabe:
gaurav@ubuntu:~/workspace$ cat sample.txt | grep legislature india steht auf den drei Säulen Legislative, Exekutive und Judikative. gaurav@ubuntu:~/workspace$
grep
gebraucht ohne Rohr ( | )Dienstprogramm
grep
kann sogar direkt als Einzelbefehl verwendet werden, ohne die Pipe zu verwenden ( |
) Dienstprogramm.
Syntax:
grep [string_to_be_searched] [Dateiname]
Beispiel:
grep India sample.txt
Ausgabe:
Indien ist ein wunderschönes Land friedliebender Menschen. Indien kümmert sich um die Menschen als Ressource
Daher habe ich die grep
Befehl direkt, um die Zeilen zu filtern, die die Zeichenfolge ‚India‘ aus der Textdatei ‚sample.txt‘ enthalten.
Groß-/Kleinschreibung bei der Suche mit grep
Befehl
Linux ist sehr vorsichtig mit der Groß-/Kleinschreibung, wenn wir die Befehle auf dem Terminal abfeuern. Dies erfordert, dass der Benutzer auf die Groß-/Kleinschreibung der Zeichenfolge, die in den Befehl eingefügt wird, achten muss.
Lassen Sie uns dies an einem Beispiel sehen.
grep peace sample.txt
In diesem Fall erhalten wir keine Ausgabe, da in der Beispieldatei kein Wort wie „Frieden“ vorhanden ist. Wir haben das Wort „Frieden“ mit einem großen „P“. Das Wort ist das gleiche, aber wenn wir das verwenden grep
Befehl ohne Option sucht es nach der genauen Übereinstimmung in der Datei und ignoriert alle Änderungen in der Groß-/Kleinschreibung.
Um diese Mehrdeutigkeit zu vermeiden, können Sie einfach die -ich
Option, die buchstäblich sagt grep
Befehl „Vergiss den Fall, in dem ich die Zeichenfolge eingegeben habe, und suche einfach nach allen passenden Mustern in der Datei.“
Syntax:
grep -i [Zeichenfolge] [Dateiname]
Beispiel:
grep -i peace sample.txt
Ausgabe:
INDIEN IST EIN SCHÖNES LAND DER FRIEDENSLIEBIGEN MENSCHEN. Indien ist ein wunderschönes Land friedliebender Menschen.
Alle übereinstimmenden Zeilen werden unabhängig von der Groß-/Kleinschreibung der übereinstimmenden Zeichenfolge angezeigt.
Rekursive Suche mit grep
Befehl
Der -R
Option sucht nach allen Dateien in einem Verzeichnis und all seinen Unterverzeichnissen, die dem vom Benutzer im Befehl angegebenen Zeichenfolgenmuster entsprechen.
Syntax:
grep -i -r [Zeichenfolge] [Dateipfad]
Beispiel:
grep -i -r Kater /home/gaurav/workspace
Die Zeichenfolge hier ist ‚tomcat‘ und wird im Verzeichnis-Arbeitsbereich gesucht. Alle Unterverzeichnisse und Dateien im Verzeichnis „workspace“ werden ebenfalls gescannt, um dem bereitgestellten Zeichenfolgenmuster zu entsprechen.
Ausgabe:
./context_log.policy:// catalina.policy - Sicherheitsrichtlinienberechtigungen für Tomcat 7 ./context_log.policy:// Hinweis: Wenn sich tomcat-juli.jar in ${catalina.base} und nicht in ${catalina.home befindet }, ./context_log.policy:// grant codeBase "file:${catalina.base}/bin/tomcat-juli.jar" {..} ./context_log.policy:grant codeBase "file:${catalina.home }/bin/tomcat-juli.jar" { ./context_log.policy: Berechtigung java.lang.RuntimePermission "accessClassInPackage.org.apache.tomcat.websocket.server"; ./context.xml: ./catalina.properties:# - Tomcat Bootstrap JARs ./catalina.properties:# - Tomcat API JARs ./catalina.properties:# - Tomcat JARs ./catalina.properties:# - Gemeinsame Nicht-Tomcat JARs ./catalina.properties:org.apache.catalina.startup.TldConfig.jarsToSkip=tomcat7-websocket.jar ./catalina.properties:tomcat.util.buf.StringCache.byte.enabled=true ./catalina.properties:# tomcat.util.buf.StringCache.char.enabled=true ./catalina.properties:#tomcat.util.buf.StringCache.trainThreshold=500000 ./catalina.properties:#tomcat.util.buf.StringCache.cacheSize=5000 . /server.xml: pathname="conf/tomcat-users.xml" /> ./server.xml:
HINWEIS: Bei Verwendung des -R
Option mit der grep
Befehl müssen wir den Pfad der Datei und nicht den Dateinamen angeben
Suche nach ganzen Wörtern nur mit grep
Befehl
Oftmals ist es der Fall, dass Sie nach einem Wort suchen, aber Ihr Terminal mit den passenden Zeilen füllen, die Ihr passendes Wort enthalten, aber nicht als einzelnes Wort. Möglicherweise sehen Sie die Zeilen, die einige Wörter enthalten, deren Unterteil die von Ihnen eingegebene Zeichenfolge ist.
Verwechselt damit? Keine Sorge, es ist viel einfacher zu verstehen, wenn Sie das Beispiel erhalten.
Beispiel:
Hier möchte ich nach einem einzelnen Wort ‚Warenkorb‘ suchen und alle zu diesem Wort passenden Zeilen in der Datei ‚sample.txt‘ anzeigen.
grep -i cart sample.txt
Ausgabe:
Kartesische Koordinaten Bedeutung aller kartesischen Koordinaten. Die Verwendung eines Ochsenkarrens ist ein alltäglicher Anblick im Dorf für die landwirtschaftlichen Arbeiten Der Karren ging verloren, als der Junge ihn losließ.
In der Ausgabe können Sie feststellen, dass das Wort „Kartesisch“ auch das Wort „Warenkorb“ enthält und somit auch die Zeilen mit dem Wort „Kartesisch“ angezeigt werden, obwohl wir sie nicht anzeigen möchten.
Du kannst den ... benutzen -w
Option mit der grep
Befehl, um diese Mehrdeutigkeit zu lösen.
Syntax:
grep -i -w [Zeichenfolge] [Dateiname]
Beispiel:
grep -i -w cart sample.txt
Ausgabe:
Die Verwendung eines Ochsenkarrens ist im Dorf für die landwirtschaftlichen Arbeiten ein alltäglicher Anblick. Der Karren verschwand, als der Junge ihn losließ.
Wenn Sie nun die –w
Option mit grep
Sie erhalten nur die Zeilen, in denen das Wort „Warenkorb“ als Ganzes verwendet wird.
Invertierte Suche mit grep
Befehl
grep
Der Befehl kann auch umgekehrt verwendet werden. Wir können das gebrauchen grep
Befehl umgekehrt, indem Sie die übereinstimmenden Zeilen ausblenden und nur die Zeilen anzeigen, in denen die Übereinstimmung nicht gefunden wird. Sie können dies tun, indem Sie die -v
Option mit der grep
Befehl.
Syntax:
grep -i -v [Zeichenfolge] [Dateiname]
Beispiel:
grep -i -v Ressourcenbeispiel.txt
Ausgabe:
INDIEN IST EIN SCHÖNES LAND DER FRIEDENSLIEBIGEN MENSCHEN. Indien steht auf den drei Säulen Legislative, Exekutive und Judikative. Indien ist ein wunderschönes Land friedliebender Menschen. kartesische Koordinaten Bedeutung aller kartesischen Koordinaten. Die Verwendung eines Ochsenkarrens ist im Dorf für die landwirtschaftlichen Arbeiten ein alltäglicher Anblick. Dies ist das Ende der Beispieldatei.
In der Ausgabe werden alle anderen Zeilen angezeigt, außer der Zeile, die das Wort „Ressource“ enthält.
Zählen des Vorkommens der übereinstimmenden Zeichenfolge
Die Ausgabe des grep
Befehl ist normalerweise sehr lang, wenn die Daten in der Datei umfangreich sind. Je mehr Übereinstimmungen, desto länger sind die Ausgaben der grep
Befehl. Linux bietet Ihnen eine Option, mit der Sie die Anzahl der Vorkommen der Übereinstimmung anzeigen können.
Syntax:
grep -i -c [Zeichenfolge] [Dateiname]
Beispiel:
grep -i -c indien sample.txt
Ausgabe:
gaurav@ubuntu:~/workspace$ grep -i -c india sample.txt 4 gaurav@ubuntu:~/workspace$
Hier ist die Ausgabe eine Zahl, die der Häufigkeit des Vorkommens des Wortes „Indien“ in der Datei sample.txt entspricht.
HINWEIS: Ich habe das benutzt -ich
Option in jedem Beispiel, um bei der Groß-/Kleinschreibung auf Nummer sicher zu gehen. Falls Sie sich bei der Groß-/Kleinschreibung des gesuchten Wortes sicher sind, können Sie das -ich
Möglichkeit.
Fazit
Wir haben die grundlegenden Verwendungen der grep
Befehl auf den Linux-Systemen in diesem Tutorial. Wir haben auch gelernt, verschiedene Inhalte anzuzeigen, die unseren Anforderungen am besten entsprechen, und das Terminal nicht mit vielen Warteschlangen zu überfüllen. grep
Befehl wird sicherlich zeitsparend sein, wenn er zum Scannen großer Datensätze verwendet wird.