Funktionsbeschreibung: Suchen Sie nach Zeichenfolgen, die die Bedingungen in der Datei erfüllen.
Syntax: grep [-abcEFGhHilLnqrsvVwxy][-A
Ergänzende Anweisungen: Der Befehl grep wird zum Suchen nach Dateien verwendet deren Inhalt den angegebenen Vorlagenstil enthält. Wenn festgestellt wird, dass der Inhalt einer Datei mit dem angegebenen Vorlagenstil übereinstimmt, zeigt der Standardbefehl grep die Spalte an, die den Vorlagenstil enthält. Wenn kein Dateiname angegeben ist oder der angegebene Dateiname „-“ ist, liest der Befehl grep Daten vom Standardeingabegerät.
Parameter:
-a oder --text Binärdaten nicht ignorieren.
-A
-b oder --byte-offset Bevor Sie die Spalte anzeigen, die dem Vorlagenstil entspricht, markieren Sie die Bitnummer des ersten Zeichens der Spalte.
-B
-c oder --count Zählt die Anzahl der Spalten, die dem Vorlagenstil entsprechen.
-C
-d
-e oder --regexp= Gibt eine Zeichenfolge als Vorlagenstil für die Suche nach Dateiinhalten an.
-E oder --extended-regexp Verwenden Sie den Vorlagenstil als erweiterte gewöhnliche Notation.
-f oder --file= Gibt eine Vorlagendatei an, deren Inhalt einen oder mehrere Vorlagenstile enthält, sodass grep Dateiinhalte finden kann, die die Vorlagenbedingungen erfüllen Vorlagenstil.
-F oder --fixed-regexp Behandeln Sie Vorlagenstile als eine Liste fester Zeichenfolgen.
-G oder --basic-regexp Verwenden Sie den Vorlagenstil als normale Darstellung.
-h oder --no-filename Geben Sie nicht den Dateinamen an, zu dem die Spalte gehört, bevor die Spalte angezeigt wird, die dem Vorlagenstil entspricht.
-H oder --with-filename Geben Sie vor der Anzeige der Spalte, die dem Vorlagenstil entspricht, den Dateinamen an, zu dem die Spalte gehört.
-i oder --ignore-case Ignoriert den Unterschied zwischen Groß- und Kleinbuchstaben.
-l oder --file-with-matches Listet die Dateinamen auf, deren Dateiinhalte mit dem angegebenen Vorlagenstil übereinstimmen.
-L oder --files-without-match Listet die Dateinamen auf, deren Dateiinhalte nicht mit dem angegebenen Vorlagenstil übereinstimmen.
-n oder --line-number Bevor Sie die Spalte anzeigen, die dem Vorlagenstil entspricht, markieren Sie die Spaltennummer der Spalte.
-q oder --quiet oder --silent zeigt keine Informationen an.
-r oder --recursive Dieser Parameter hat die gleiche Wirkung wie die Angabe des Parameters „-d recurse“.
-s oder --no-messages Zeigt keine Fehlermeldungen an.
-v oder --revert-match Kehrt die Suche um.
-V oder --version Versionsinformationen anzeigen.
-w oder --word-regexp Zeigt nur Spalten an, die mit dem gesamten Wort übereinstimmen.
-x oder --line-regexp Zeigt nur Spalten an, die mit allen Spalten übereinstimmen.
-y Dieser Parameter hat die gleiche Wirkung wie die Angabe des Parameters „-i“.
--help Online-Hilfe.
Verwendung des Linux-Befehls grep
Verwenden Sie den Befehl grep, um Textdateien von www.linuxso.com zu durchsuchen
Wenn Sie eine Zeichenfolge in mehreren Textdateien finden möchten, können Sie ‘ grep'-Befehl. „grep“ durchsucht Text nach einer angegebenen Zeichenfolge.
Angenommen, Sie suchen nach einer Datei mit der Zeichenfolge „magic“ im Verzeichnis „/usr/src/linux/Documentation“:
$ grep magic /usr/src/linux/Documentation/*
sysrq .txt :* Wie aktiviere ich den magischen SysRQ-Schlüssel?
sysrq.txt:* Wie verwende ich den magischen SysRQ-Schlüssel?
Die Datei „sysrp.txt“ enthält diese Zeichenfolge und erläutert die Funktion von SysRQ.
Standardmäßig durchsucht „grep“ nur das aktuelle Verzeichnis. Wenn sich in diesem Verzeichnis viele Unterverzeichnisse befinden, listet „grep“ diese wie folgt auf:
grep: sound: Ist ein Verzeichnis
Dies kann dazu führen, dass die Ausgabe von „grep“ schwer lesbar ist. Hier gibt es zwei Lösungen:
Bitten Sie ausdrücklich, das Unterverzeichnis zu durchsuchen: grep -r
oder ignorieren Sie das Unterverzeichnis: grep -d skip
Wenn Sie viel Ausgabe erwarten, können Sie es natürlich auch über die Pipeline weiterleiten weiterlesen 'weniger'
$ grep magic /usr/src/linux/Documentation/* | weniger
Auf diese Weise können Sie bequemer lesen.
Zu beachten ist, dass Sie eine Dateifiltermethode bereitstellen müssen (verwenden Sie *, um alle Dateien zu durchsuchen). Wenn Sie es vergessen, wartet „grep“, bis das Programm unterbrochen wird. Wenn dies auftritt, drücken Sie
Hier sind einige interessante Befehlszeilenparameter:
grep -i Musterdateien: Suche ohne Berücksichtigung der Groß- und Kleinschreibung. Bei der Standardeinstellung wird die Groß-/Kleinschreibung beachtet.
grep -l Musterdateien: Es werden nur übereinstimmende Dateinamen aufgelistet.
grep -L Musterdateien: Nicht übereinstimmende Dateinamen werden aufgelistet.
grep -w Musterdateien: Nur übereinstimmende Dateinamen ganzes Wort, nicht Teil der Zeichenfolge (z. B. Übereinstimmung mit „magic“, nicht „magical“),
grep -C-Zahlenmusterdateien: Übereinstimmende Kontexte zeigen jeweils [Zahlen]-Zeilen an,
grep-Muster1 |. Zeilen anzeigen, die mit Muster1 oder Muster2 übereinstimmen,
grep-Muster1-Dateien |. Zeilen anzeigen, die sowohl mit Muster1 als auch mit Muster2 übereinstimmen.
Es gibt auch einige spezielle Symbole für die Suche:
< markiert den Anfang bzw. das Ende von Wörtern.
Zum Beispiel:
grep man * passt zu „Batman“, „manic“, „man“ usw.
grep „
'^': bedeutet, dass die übereinstimmende Zeichenfolge am Anfang der Zeile steht.
'$': bedeutet, dass die übereinstimmende Zeichenfolge am Ende der Zeile steht.
Wenn Sie nicht mit Befehlen vertraut sind Zeilenparameter können Sie in der grafischen Benutzeroberfläche mit grep versuchen, z. B. reXgrep. Diese Software bietet Syntax wie UND, ODER, NICHT und schöne Schaltflächen :-). Wenn Sie nur eine klarere Ausgabe benötigen, versuchen Sie es mit fungrep .
.grep-Suchzeichenfolge
Befehlsformat:
grep-Zeichenfolge-Dateiname
Es gibt viele Möglichkeiten, Zeichenfolgen zu finden, zum Beispiel möchte ich alle Zeilen finden, die mit M beginnen. Muster muss eingeführt werden Im Folgenden finden Sie einige einfache Beispiele und Erklärungen:
^M Zeilen, die mit M beginnen, ^ bedeutet den Anfang
M$ Zeilen, die mit M enden, $ bedeutet das Ende
^[0-9] Zeilen, die mit Zahlen oder Buchstaben beginnen, können in []
^[124ab] aufgelistet werden. Zeilen, die mit 1, 2, 4, a oder b beginnen
^b.503 Punkt Stellt einen beliebigen Buchstaben dar
* Sternchen bedeutet mehr mehr als 0 Buchstaben (kann keine sein)
+ Pluszeichen zeigt mehr als 1 Buchstaben an
Schrägstriche können Sonderbedeutungen entfernen
cat passwd |. Listen Sie die Liste der Austauschstudenten auf, die sich für Konten beworben haben
cat passwd |. Listen Sie die Noten der Fakultät für Elektrotechnik auf ...
grep '^.' myfile.txt Listet alle Zeilen auf, die mit einem Punkt beginnen
Entspricht einem Nicht-Neuzeilen-Zeichen. Beispiel: „gr.p“ entspricht gr, gefolgt von einem beliebigen Zeichen, dann p.
*
entspricht null oder mehr vorherigen Zeichen. Beispiel: „*grep“ entspricht allen Zeilen mit einem oder mehreren Leerzeichen, gefolgt von grep. .* steht zusammen für ein beliebiges Zeichen.
[]
stimmt mit Zeichen innerhalb eines angegebenen Bereichs überein, z. B. „[Gg]rep“ stimmt mit Grep und grep überein.
[^]
entspricht einem Zeichen, das nicht im angegebenen Bereich liegt, z. B.: „[^A-FH-Z]rep“ entspricht einem Buchstaben, der weder A-R noch T-Z enthält , gefolgt von der Wiederholungszeile.
(..)
markiert übereinstimmende Zeichen, wie zum Beispiel „(Liebe)“, Liebe wird als 1 markiert.
<
Verankern Sie den Anfang eines Wortes, wie zum Beispiel: '
>
Verankern Sie das Ende eines Wortes, wie zum Beispiel 'grep> ;' Match enthält Zeilen, die mit den Wörtern grep enden.
x{m}
Wiederholt das Zeichen x, m-mal, z. B.: „0{5}“ entspricht Zeilen, die 5 o enthalten.
x{m,}
Wiederholen Sie das Zeichen x mindestens m-mal, z. B.: „o{5,}“ entspricht Zeilen mit mindestens 5 o.
x{m,n}
Wiederholen Sie das Zeichen x, mindestens m-mal und nicht öfter als n-mal, wie zum Beispiel: „o{5,10}“ entspricht 5--10 o ist in Ordnung.
w
entspricht Text und numerischen Zeichen, also [A-Za-z0-9], wie zum Beispiel: „Gw*p“ entspricht G, gefolgt von null oder mehr Text oder Zahlen Zeichen, dann p.
W
Die umgekehrte Form von w, die einem oder mehreren Nicht-Wort-Zeichen entspricht, z. B. Punkt, Punkt usw.
b
Wortsperrzeichen, wie zum Beispiel: „bgrepb“ stimmt nur mit grep überein.
3. Metazeichen-Erweiterungssatz für egrep und grep -E
+
stimmt mit einem oder mehreren vorherigen Zeichen überein. Beispiel: „[a-z]+able“ entspricht einer Zeichenfolge aus einem oder mehreren Kleinbuchstaben, gefolgt von „able“, z. B. „loveable“, „enable“, „disable“ usw.
?
entspricht null oder mehr vorherigen Zeichen. Beispiel: „gr?p“ findet Zeilen mit gr gefolgt von einem oder keinem Zeichen und dann p.
a|b|c
entspricht a oder b oder c. Zum Beispiel: grep|sed entspricht grep oder sed
()
Gruppierungssymbole, wie zum Beispiel: love(able|rs)ov+ entspricht „loveable“ oder „lovers“, entspricht einem oder mehreren ov.
x{m},x{m,},x{m,n}
Die Funktion ist die gleiche wie x{m},x{m,},x{m, n}
4. POSIX-Zeichenklassen
Um die Konsistenz der Zeichenkodierungen in verschiedenen Ländern zu gewährleisten, fügt POSIX (The Portable Operating System Interface) spezielle Zeichenklassen hinzu, wie zum Beispiel [:alnum: ] ist A- Eine andere Möglichkeit, Za-z0-9 zu schreiben. Sie müssen in []-Zeichen eingefügt werden, um zu regulären Ausdrücken zu werden, z. B. [A-Za-z0-9] oder [[:alnum:]]. Mit Ausnahme von fgrep unterstützt grep unter Linux POSIX-Zeichenklassen.
[:alnum:]
Alphanumerische Zeichen
[:alpha:]
Wörtliche Zeichen
[:digit: ]
Numerische Zeichen
[:graph:]
Nicht-Null-Zeichen (Nicht-Leerzeichen, Steuerzeichen)
[:lower:]
Kleinbuchstaben
[:cntrl:]
Steuerzeichen
[:print:]
Nicht leere Zeichen (einschließlich Leerzeichen). )
[:punct:]
Interpunktion
[:space:]
Alle Leerzeichen (neue Zeile, Leerzeichen, Tabulator)
[:upper:]
Großbuchstaben
[:xdigit:]
Hexadezimale Ziffern (0-9, a-f, A-F)
5. Grep-Befehlsoptionen
-?
zeigen gleichzeitig die oberen und unteren übereinstimmenden Zeilen an? Zeilen wie: grep -2 Musterdateiname zeigt gleichzeitig die obere und untere Zeile der übereinstimmenden Zeile an.
-b, --byte-offset
Drucken Sie die Blocknummer, in der sich die Zeile befindet, bevor Sie die entsprechende Zeile drucken.
-c,--count
Druckt nur die Anzahl der übereinstimmenden Zeilen und zeigt nicht den übereinstimmenden Inhalt an.
-f Datei, --file=Datei
Vorlage aus Datei extrahieren. Eine leere Datei enthält 0 Vorlagen, daher stimmt nichts überein.
-h, --no-filename
Bei der Suche nach mehreren Dateien werden keine übereinstimmenden Dateinamenpräfixe angezeigt.
-i, --ignore-case
Unterschiede zwischen Groß- und Kleinschreibung ignorieren.
-q, --quiet
Anzeige abbrechen und nur den Exit-Status zurückgeben. 0 bedeutet, dass eine passende Zeile gefunden wurde.
-l, --files-with-matches
Drucken Sie eine Liste der Dateien, die zur Vorlage passen.
-L, --files-without-match
Drucken Sie eine Liste der Dateien, die nicht mit der Vorlage übereinstimmen.
-n, --line-number
Drucken Sie die Zeilennummer vor der passenden Zeile.
-s, --silent
Zeigt keine Fehlermeldungen zu Dateien an, die nicht existieren oder nicht gelesen werden können.
-v, --revert-match
Umgekehrter Abruf, nur nicht übereinstimmende Zeilen anzeigen.
-w, --word-regexp
Wenn durch < und > zitiert, suchen Sie den Ausdruck als Wort.
-V, --version
Zeigt Informationen zur Softwareversion an.
6. Beispiele
Um das grep-Tool gut nutzen zu können, müssen Sie reguläre Ausdrücke gut schreiben, daher werden wir hier nicht alle Funktionen von grep anhand von Beispielen erklären Einige Beispiele, um zu erklären, wie man reguläre Ausdrücke schreibt.
$ ls -l |.
Filtern Sie die Ausgabe von ls -l durch die Pipeline und zeigen Sie nur Zeilen an, die mit a beginnen.
$ grep 'test' d*
Zeigt alle Zeilen an, die test in Dateien enthalten, die mit d beginnen.
$ grep 'test' aa bb cc
Zeigt den Zeilenübereinstimmungstest in den Dateien aa, bb, cc an.
$ grep '[a-z]{5}' aa
Zeigt alle Zeilen an, die Zeichenfolgen mit jeweils mindestens 5 aufeinanderfolgenden Kleinbuchstaben enthalten.
$ grep 'w(es)t.*1' aa
Wenn west gefunden wird, wird es im Speicher gespeichert und als 1 markiert. Anschließend wird nach einer beliebigen Anzahl von Zeichen (.*) gesucht, gefolgt von einem weiteren es (1). . . Wenn Sie egrep oder grep -E verwenden, müssen Sie nicht mit dem „“-Zeichen maskieren, sondern schreiben Sie es einfach direkt als „w(es)t.*1“.