Heim > Artikel > Betrieb und Instandhaltung > Einführung in die Verwendung des Linux-Befehls grep
1. Funktion
Der grep-Befehl im Linux-System ist ein leistungsstarkes Textsuchwerkzeug. Es kann reguläre Ausdrücke verwenden, um nach Text zu suchen und die passenden Zeilen auszudrucken. Der vollständige Name von grep lautet Global Regular Expression Print, was bedeutet, dass die globale Version des regulären Ausdrucks für alle Benutzer gilt.
2. Format
grep [Optionen]
3. Hauptparameter
[Optionen] Hauptparameter:
-c: Es wird nur die Anzahl der übereinstimmenden Zeilen ausgegeben.
-I: Groß- und Kleinschreibung wird nicht beachtet (gilt nur für einzelne Zeichen).
-h: Dateinamen nicht anzeigen, wenn mehrere Dateien abgefragt werden.
-l: Bei der Abfrage mehrerer Dateien werden nur die Dateinamen ausgegeben, die übereinstimmende Zeichen enthalten.
-n: Übereinstimmende Zeilen und Zeilennummern anzeigen.
-s: Zeigt keine Fehlermeldungen an, die nicht vorhanden sind oder keinen passenden Text haben.
-v: Zeigt alle Zeilen an, die keinen passenden Text enthalten.
Muster regulärer Ausdruck Hauptparameter:
: Ignorieren Sie die ursprüngliche Bedeutung von Sonderzeichen im regulären Ausdruck.
^: entspricht der Startzeile des regulären Ausdrucks.
$: Entspricht der Endzeile des regulären Ausdrucks.
<: Beginnen Sie mit der Zeile, die dem regulären Ausdruck entspricht.
>: bis zum Ende der Zeile, die dem regulären Ausdruck entspricht.
[ ]: Ein einzelnes Zeichen wie [A], also A, erfüllt die Anforderungen.
[ - ]: Bereich wie [A-Z], also A, B, C bis Z, alle erfüllen die Anforderungen.
. : Alle Einzelzeichen.
*: Es gibt Zeichen und die Länge kann 0 sein.
Ein einfaches Beispiel mit dem grep-Befehl
$ grep ‘test’ d*
Zeigt alle Zeilen an, die test in Dateien beginnen, 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 enthalten, von denen jede mindestens 5 aufeinanderfolgende Kleinbuchstaben enthält.
$ grep 'w(es)t.*1′ aa
Wenn west übereinstimmt, wird es im Speicher gespeichert und als 1 markiert und sucht dann nach einer beliebigen Anzahl von Zeichen ( . *), diesen Zeichen folgt ein weiteres es(1) und die Zeile wird angezeigt, wenn sie gefunden wird. Wenn Sie egrep oder grep -E verwenden, müssen Sie nicht mit dem Zeichen „“ maskieren. Schreiben Sie es einfach direkt als „w(es)t.*1“.
5.grep-Befehl anhand komplexer Beispiele
Angenommen, Sie suchen nach Dateien mit der Zeichenfolge „magic“ im Verzeichnis „/usr/src/Linux/Doc“:
$ grep magic /usr/src/Linux/Doc/*
sysrq.txt:* Wie aktiviere ich den magischen SysRQ-Schlüssel?
sysrq.txt:* Wie verwende ich den magischer 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. Es gibt zwei Lösungen:
Explizit nach Unterverzeichnissen fragen: grep -r
oder Unterverzeichnisse ignorieren: grep -d skip
Wenn viel Ausgabe vorhanden ist, können Sie dies tun Leiten Sie es an „less“ weiter, um es zu lesen:
$ grep magic /usr/src/Linux/Documentation/* | less
Auf diese Weise können Sie es 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
Im Folgenden finden Sie 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: Nur übereinstimmende Dateinamen werden aufgelistet,
grep -L Musterdateien: Nicht übereinstimmende Dateinamen werden aufgelistet,
grep -w-Musterdateien: Passen Sie nur das gesamte Wort an, nicht einen Teil der Zeichenfolge (z. B. Übereinstimmung mit „magisch“, nicht „magisch“).
grep -C-Nummernmusterdateien: entsprechen dem Kontext bzw. der Anzeige [ Anzahl] Zeilen,
grep-Muster1 |. Muster2-Dateien: Anzeigezeilen, die mit Muster1 oder Muster2 übereinstimmen,
grep-Muster1-Dateien |.
grep -n-Musterdateien können die Informationen zur Zeilennummer anzeigen
grep -c-Musterdateien können die Gesamtzahl der Zeilen finden
Es gibt auch einige spezielle Symbole für die Suche:
< und > markieren den Anfang und das Ende von Wörtern.
Zum Beispiel:
grep man * entspricht „Batman“, „manic“, „man“ usw.,
grep „ grep ' '^': bedeutet, dass die übereinstimmende Zeichenfolge am Anfang der Zeile steht, '$': bedeutet, dass die übereinstimmende Zeichenfolge am Ende der Zeile steht, Grep-Befehlsverwendungsliste 1. Parameter: -I: Groß-/Kleinschreibung ignorieren -c: Anzahl der übereinstimmenden Zeilen ausgeben -l : Dateien suchen, die Übereinstimmungen enthalten -v: Zeilen suchen, die keine Übereinstimmungen enthalten -n: Zeilen und Zeilenbeschriftungen drucken, die Übereinstimmungen enthalten 2 ) Ignoriert die ursprüngliche Bedeutung von Sonderzeichen im regulären Ausdruck ^ Passt zur Anfangszeile des regulären Ausdrucks $ Passt zur Endzeile des regulären Ausdrucks < Beginnen Sie mit der Zeile, die dem regulären Ausdruck > bis zum Ende der Zeile, die dem regulären Ausdruck [ ] entspricht, bedeutet, dass A die Anforderungen erfüllt [ - ] Bereich; [A-Z] bedeutet, dass A, B, C bis Z alle die Anforderungen erfüllen Alle einzelnen Zeichen * Alle Zeichen, die Länge kann 0 sein 3 🎜>
root::0:root mail::6:root # more size.txt |. grep -i 'b1..*3' -i : Groß-/Kleinschreibung ignorieren b124230 b103303 B103303 # mehr size.txt | -iv 'b1..*3' -v : Keine Übereinstimmungen finden Die Zeilen b034325 a081016 m7187998 m7282064 a022021 a061 048 m9324822 a013386 b044525 m8987131 B081016 M45678 BA Dc2345 # more size.txt | 15:B103303 # grep '$' /etc/init.d/nfs.server |. $' /etc/init.d/nfs.server |. wc -l ignorieren Die ursprüngliche Bedeutung von Sonderzeichen in regulären Ausdrücken 15 # grep '$' /etc/init.d /nfs.server case „$1“ in >/tmp/sharetab.$$ [ „x$fstype“ != xnfs ] &&
echo "$patht$rest$fstypet$optst$desc" >>/tmp/sharetab.$$ /usr/bin/touch -r /etc/ dfs/sharetab /tmp/sharetab.$$ /usr/bin/mv -f /tmp/sharetab.$$ /etc/dfs/sharetab if [ -f /etc/ dfs/dfstab ] && /usr/bin/egrep -v '^[ ]*(#|$)' if [ $startnfsd -eq 0 -a -f /etc/rmmount.conf ] && if [ $startnfsd -ne 0 ]; then elif [ ! -n "$_INIT_RUN_LEVEL" ]; then while [ $wtime -gt 0 ]; 🎜>
wtime=`expr $wtime - 1`
if [ $wtime -eq 0 ]; then
echo „Verwendung: $0 { start | stop }“
# mehr size.txt
die Testdatei
es sind Dateien
Das Ende
# grep 'the' size.txt
die Testdatei
das sind Dateien
# grep ' die Testdatei das sind Dateien # grep 'the>' size.txt die Testdatei # grep ' die Testdatei # grep '<[Tt]he> ' size.txt die Testdatei ============== =================== ============================= ==== 1, Einführung Ein vielseitiges Textsuchtool, das reguläre Ausdrücke verwendet. Dieser Befehl php?name=%C3%FC%C1%EE" onclick="tagshow(event)" class="t_tag"> ist ursprünglich ein ed-Zeileneditor Ein php?name=%C3%FC%C1%EE" onclick="tagshow(event)" class="t_tag">Command/Filter: g/re/p – global – regulärer Ausdruck - drucken. Grundformat grep-Muster [Datei...] (1) grep-Suchzeichenfolge [Dateiname] (2)grep Regulärer Ausdruck [Dateiname] Suche nach allen Vorkommen von Muster in der Datei. Muster kann entweder eine zu suchende Zeichenfolge oder ein regulärer Ausdruck sein. Hinweis: Verwenden Sie am besten double Achten Sie bei der Eingabe der zu durchsuchenden Zeichenfolge in Anführungszeichen und bei der Verwendung regulärer Ausdrücke für den Mustervergleich auf die Verwendung von einfachen Anführungszeichen 2, grep-Option -c Nur die Anzahl der übereinstimmenden Zeilen ausgeben -i ohne Berücksichtigung der Groß-/Kleinschreibung (für einzelne Zeichen) -n übereinstimmende Zeilennummern anzeigen -v keine Übereinstimmungen anzeigen Alle Textzeilen -s zeigt keine Fehlermeldungen an -E erweiterte reguläre Ausdrücke verwenden Weitere Optionen finden Sie unter: man grep 3, Häufig verwendete Grep-Beispiele (1) Abfrage mehrerer Dateien grep "sort" *.doc #Siehe Dateinamenübereinstimmung (2) Zeilenübereinstimmung: Gibt die Anzahl der übereinstimmenden Zeilen aus grep -c "48" data.doc #Geben Sie die Anzahl der Zeilen mit 48 Zeichen im Dokument aus (3) Zeigen Sie übereinstimmende Zeilen und die Anzahl der Zeilen an grep -n "48" Daten .doc #Alle Zeilen und Zeilennummern anzeigen, die mit 48 übereinstimmen (4) Nicht übereinstimmende Zeilen anzeigen grep -vn "48" data.doc # Alle Zeilen ausgeben, die nicht 48 enthalten (4) Nicht übereinstimmende Zeilen anzeigen grep -vn "48" data.doc #Alle Zeilen ausgeben, die nicht 48 enthalten (5) Groß-/Kleinschreibung beachten grep -i "ab" data.doc #Alle Zeilen ausgeben, die Zeichenfolgen von ab oder Ab enthalten 4, Anwendung regulärer Ausdrücke (1) Anwendung regulärer Ausdrücke ( Hinweis: Es ist am besten, reguläre Ausdrücke in einfache Anführungszeichen zu setzen) grep '[239].' #Alle Zeichen ausgeben, die mit 2, 3 oder Zeilen beginnen, die mit 9 beginnen und zwei Zahlen enthalten (2) Nicht übereinstimmender Test grep '^[^48]' data.doc #Passt nicht auf Zeilen, die mit 48 beginnen (3) Erweiterten Mustervergleich verwenden grep -E '219|216' data.doc (4) ... Dies muss in der Praxis kontinuierlich angewendet und zusammengefasst werden und reguläre Ausdrücke kompetent beherrschen. 5, verwenden Sie den Klassennamen , um den Klassennamen für den internationalen Mustervergleich zu verwenden: [[:upper:]] [A-Z] [[ :lower:]] [a-z] [[:digit:]] [0-9] [[:alnum:]] [0-9a-zA-Z] [[:space:]] Leerzeichen oder Tabulator [[:alpha:]] [a-zA-Z] (1) Verwenden Sie grep '5[[:upper:]][[:upper:]]' data.doc #Abfragezeilen, die mit 5 beginnen und mit zwei Großbuchstaben enden Das obige ist der detaillierte Inhalt vonEinführung in die Verwendung des Linux-Befehls grep. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!