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 von Linux, 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
Befehls mit einigen praktischen Beispielen im Detail überprüfen .
Optionen verfügbar mit grep
Befehl
Dies sind einige der grundlegenden Optionen, die Sie häufig mit dem grep
Befehl verwenden werden.
Möglichkeit |
Beschreibung |
-i |
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 |
So zeigen Sie die nicht übereinstimmenden Zeilen an |
-w |
Filtern Sie nach diesem bestimmten Wort, das separat verwendet wird |
Verwenden des grep
Befehls
grep
Der Befehl wird normalerweise mit dem |
Dienstprogramm pipe ( ) verwendet. Es kann mit der Shell-Pipe implementiert werden, wenn Sie es mit einigen anderen Linux-Befehlen verwenden möchten. Zwar grep
kann auch einzeln , ohne das Rohr (verwendet werden |
) Dienstprogramm.
Sehen wir uns einige der grundlegenden Syntaxen des grep
Befehls mit und ohne das Pipe-Dienstprogramm an.
Lassen Sie mich Ihnen zuerst die Beispieltextdatei zeigen, die ich verwenden werde, um den grep
Befehl zu veranschaulichen .
INDIA IS A BEAUTIFUL COUNTRY OF PEACE LOVING PEOPLE.
india stands on three pillars of legislature, executive and judiciary.
India Is a Beautiful Country Of Peace Loving People.
India cares for the people as it's resource
cartesian coordinates
importance of all th cartesian coordinates.
Following are two empty lines.
use of a bullock cart is a common sight in the village for the agrarian chores.
This is the end of the sample file.
grep
Wird mit dem Dienstprogramm Pipe ( | ) verwendet
grep
Der Befehl kann zusammen mit anderen Linux-Befehlen mithilfe der Shellpipes implementiert werden. cat
Zum Beispiel, wenn Sie den Befehl verwenden, um den Inhalt der Datei anzuzeigen, aber gleichzeitig die Ausgabe mit dem grep
Befehl weiterleiten, um nur den Inhalt anzuzeigen, den Sie sehen möchten. Dies wird klarer, wenn wir das Beispiel durchgehen.
Syntax :
[command] | grep [string]
Beispiel :
cat sample.txt | grep legislature
Hier habe ich den cat
Befehl verwendet, um einige Zeilen aus der Datei 'sample.txt' anzuzeigen. Es sollen nur die Zeilen angezeigt werden, die das Wort 'Legislative' enthalten und die restlichen Zeilen ignorieren.
Ausgabe :
[email protected]:~/workspace$ cat sample.txt | grep legislature
india stands on three pillars of legislature, executive and judiciary.
[email protected]:~/workspace$
grep
verwendet ohne Rohr ( | ) Dienstprogramm
grep
kann sogar direkt als einzelner Befehl verwendet werden, ohne das |
Dienstprogramm pipe ( ) zu verwenden.
Syntax :
grep [string_to_be_searched] [filename]
Beispiel :
grep India sample.txt
Ausgabe :
India Is a Beautiful Country Of Peace Loving People.
India cares for the people as it's resource
Daher habe ich den grep
Befehl direkt verwendet, um die Zeilen zu filtern, die den String '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 als 'Frieden' vorhanden ist. Wir haben das Wort „Frieden“ mit einem großen „P“. Das Wort ist dasselbe, aber wenn wir den grep
Befehl ohne Option verwenden, sucht er nach der genauen Übereinstimmung in der Datei, wobei Änderungen in der Groß-/Kleinschreibung ignoriert werden.
Um diese Mehrdeutigkeit zu vermeiden, können Sie einfach die -i
Option verwenden, die buchstäblich den grep
Befehl "vergessen Sie den Fall, in dem ich die Zeichenfolge eingefügt habe, und suchen Sie einfach nach allen übereinstimmenden Mustern in der Datei".
Syntax:
grep -i [string] [filename]
Beispiel :
grep -i peace sample.txt
Ausgabe :
INDIA IS A BEAUTIFUL COUNTRY OF PEACE LOVING PEOPLE.
India Is a Beautiful Country Of Peace Loving People.
Alle übereinstimmenden Zeilen werden unabhängig von der Groß-/Kleinschreibung der übereinstimmenden Zeichenfolge angezeigt.
Rekursive Suche mit grep
Befehl
Die -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 [string] [file_path]
Beispiel :
grep -i -r tomcat /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 - Security Policy Permissions for Tomcat 7
./context_log.policy:// Note: If tomcat-juli.jar is in ${catalina.base} and not in ${catalina.home},
./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: permission 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:# - Common non-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:
./tomcat-users.xml:
./tomcat-users.xml:
./web.xml:
./web.xml:
HINWEIS : Bei der Verwendung der -r
Option mit dem 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 :
Cartesian coordinates
importance of all the Cartesian coordinates.
use of a bullock cart is a common sight in the village for the agrarian chores
The cart went missing as the boy left it loose.
In der Ausgabe können Sie beobachten, 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 wollen.
Sie können die -w
Option mit dem grep
Befehl verwenden, um diese Mehrdeutigkeit zu lösen.
Syntax :
grep -i -w [string] [filename]
Beispiel :
grep -i -w cart sample.txt
Ausgabe :
use of a bullock cart is a common sight in the village for the agrarian chores.
The cart went missing as the boy left it loose.
Wenn Sie nun die w
Option – mit verwendet haben, erhalten grep
Sie 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 den grep
Befehl umgekehrt verwenden, indem wir die übereinstimmenden Zeilen ausblenden und nur die Zeilen anzeigen, in denen die Übereinstimmung nicht gefunden wird. Sie können dies mit der -v
Option mit dem grep
Befehl tun .
Syntax :
grep -i -v [string] [filename]
Beispiel :
grep -i -v resource sample.txt
Ausgabe :
INDIA IS A BEAUTIFUL COUNTRY OF PEACE LOVING PEOPLE.
india stands on three pillars of legislature, executive and judiciary.
India Is a Beautiful Country Of Peace Loving People.
cartesian coordinates
importance of all th cartesian coordinates.
use of a bullock cart is a common sight in the village for the agrarian chores.
This is the end of the sample file.
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
Befehls ist normalerweise sehr lang, wenn die Daten in der Datei umfangreich sind. Je mehr Übereinstimmungen, desto länger sind die Ausgaben des grep
Befehls. Linux bietet Ihnen eine Option, mit der Sie die Anzahl der Vorkommen der Übereinstimmung anzeigen können.
Syntax :
grep -i -c [string] [filename]
Beispiel :
grep -i -c india sample.txt
Ausgabe :
[email protected]:~/workspace$ grep -i -c india sample.txt
4
[email protected]:~/workspace$
Hier ist die Ausgabe eine Zahl, die der Häufigkeit des Vorkommens des Wortes 'India' in der Datei sample.txt entspricht.
HINWEIS : Ich habe die -i
Option in jedem Beispiel verwendet, 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 die -i
Option getrost weglassen .
Abschluss
grep
In diesem Tutorial haben wir die grundlegende Verwendung des Befehls auf Linux-Systemen kennengelernt. 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.