Heim >Betrieb und Instandhaltung >Betrieb und Wartung von Linux >Shell-Programmierung – wie verwende ich den grep-Befehl?
Bevor Sie reguläre Ausdrücke lernen, müssen Sie es zunächst klarstellen und im Hinterkopf behalten, das heißt:
Unter Linux werden Wildcards interpretiert durch die Shell, während reguläre Ausdrücke vom Befehl interpretiert werden. Verwechseln Sie die beiden nicht. Erinnern! ! !
Normalerweise gibt es drei Textverarbeitungswerkzeuge/-befehle: grep, sed und awk, die alle drei reguläre Ausdrücke interpretieren können. Im Folgenden werde ich Ihnen die Verwendung des grep-Befehls vorstellen.
1. Verwenden Sie den grep-Befehl, um den Inhalt in der Datei zu durchsuchen
Die Befehle grep und egrep können im Inhalt einer oder mehrerer Dateien nach einem bestimmten Zeichenmuster, auch reguläre Ausdrücke genannt, suchen. Ein Muster kann ein einzelnes Zeichen, eine Zeichenfolge, ein Wort oder ein Satz sein.
Ein regulärer Ausdruck ist ein Muster, das eine Reihe von Zeichenfolgen beschreibt. Die Konstruktion regulärer Ausdrücke orientiert sich an mathematischen Ausdrücken, indem Operatoren verwendet werden, um kleinere Ausdrücke zu einem neuen Ausdruck zu kombinieren. Ein regulärer Ausdruck kann entweder aus einfachen Textliteralen oder aus Sonderzeichen bestehen, die zum Generieren von Mustern verwendet werden. Um ein Suchmuster weiter zu definieren, unterstützt der Befehl grep die folgenden Metazeichen für reguläre Ausdrücke, auch Platzhalter genannt.
ps: Die Sprache für reguläre Ausdrücke besteht aus zwei grundlegenden Zeichentypen: wörtliche (normale) Textzeichen und Metazeichen. Metazeichen verleihen regulären Ausdrücken Rechenleistung. Die sogenannten Metazeichen beziehen sich auf Sonderzeichen mit besonderer Bedeutung in regulären Ausdrücken, mit denen das Erscheinungsmuster ihrer führenden Zeichen (also der Zeichen vor den Metazeichen) im Zielobjekt angegeben werden kann.
c*: Entspricht 0 oder mehr Zeichen c
.: Entspricht jedem und nur einem Zeichen (Zeilenumbruch (außer Zeichen)
[xyz]: entspricht jedem Zeichen in eckigen Klammern
[^xyz]: entspricht jedem Zeichen ohne eckige Klammern Alle Zeichen in Klammern
^: sperrt den Zeilenanfang
$: sperrt das Zeilenende
In einfachen regulären Ausdrücken haben Metazeichen wie *, +, {}, | und () ihre ursprüngliche Bedeutung verloren. Wenn Sie ihre ursprüngliche Bedeutung wiederherstellen möchten, muss ihnen ein Backslash vorangestellt werden, z. , + usw.
Der grep-Befehl wird verwendet, um in jeder Datei oder in der Standardausgabe nach einem bestimmten Muster zu suchen. Bei Verwendung des grep-Befehls wird jede Zeile, die ein bestimmtes Zeichenmuster enthält, auf dem Bildschirm gedruckt. Das Syntaxformat des grep-Befehls lautet wie folgt:
grep-Optionsmusterdatei name
Unter diesen können Optionen die Suchmethode des grep-Befehls ändern. Mit Ausnahme der Option -w kann jede andere Option in den Befehlen egrep und fgrep verwendet werden. Allgemeine Optionen für den grep-Befehl sind wie folgt:
-c (count): Nur die Anzahl der Zeilen auflisten, die das Muster enthalten
- i (ignorieren): Groß-/Kleinschreibung von Buchstaben im Muster ignorieren
-l (Liste): Dateinamen mit übereinstimmenden Zeilen auflisten
- n: match Listen Sie die Zeilennummer vor der Zeile auf
-v: Listen Sie die Zeilen auf, die nicht mit dem Muster übereinstimmen (umgekehrt)
-w: Den Ausdruck ändern. Die Formel wird als vollständiges Wort durchsucht und die teilweise übereinstimmenden Zeilen werden ignoriert.
-q: Silent-Modus, keine Ausgabe, Sie müssen $ verwenden ? um festzustellen, ob die Ausführung erfolgreich ist, d Zeilen zusammen
-B n: Wenn die Übereinstimmung erfolgreich ist, drucken Sie die passende Zeile und die n Zeilen davor und danach zusammen aus
- C n: Wenn die Übereinstimmung erfolgreich ist, drucken Sie die übereinstimmende Zeile und die n Zeilen davor und danach zusammen. Drucken Sie sie aus
ps: Wenn mehrere Dateien durchsucht werden, werden die Ergebnisse des grep Der Befehl zeigt nur die Dateinamen an, die mit dem in der Datei gefundenen Muster übereinstimmen.
Wenn Sie eine einzelne Datei durchsuchen, zeigen die Ergebnisse des Befehls grep jede Zeile an, die ein übereinstimmendes Muster enthält.
Das Obige ist die grundlegende Methode zur Verwendung des grep-Befehls. Aber manchmal kann ein einfacher regulärer Ausdruck den zu durchsuchenden Inhalt nicht finden. Wenn Sie nach Datenzeilen suchen möchten, die sowohl Modus 1 als auch Modus 2 erfüllen, kann der Befehl egrep hilfreich sein.
Das Syntaxformat des Befehls egrep ist das gleiche wie der Befehl grep. Der Befehl egrep wird jedoch verwendet, um mithilfe der Metazeichen erweiterter regulärer Ausdrücke nach einem bestimmten Muster im Inhalt einer oder mehrerer Dateien zu suchen. Die erweiterten Metazeichen für reguläre Ausdrücke umfassen die im grep-Befehl verwendeten Metazeichen für reguläre Ausdrücke und fügen außerdem einige zusätzliche Metazeichen hinzu, etwa die folgenden:
+: Entspricht einem oder mehreren führenden Zeichen
a|b: Übereinstimmung mit a oder b
(RE): Übereinstimmung mit dem regulären Ausdruck in Klammern Ausdruck RE
Im Folgenden werde ich einige grundlegende Beispiele verwenden, um Ihr Verständnis für die Verwendung der Befehle grep und egrep zu verbessern. Da alle Optionen egrep im grep-Befehl verwendet werden können (egrep ist leistungsfähiger), werde ich der Einfachheit halber den egrep-Befehl verwenden, um für alle zu demonstrieren:
Beispiel 1: Zeigen Sie an, dass die Datei /etc/ passwd Stammzeilen enthält
Beispiel 2: /etc ausgeben Jede Zeile, die bash in /passwd enthält, sollte auch den Inhalt der beiden Zeilen über und unter der Zeile
ausgeben
Beispiel 3: Zeigen Sie an, wie viele Zeilen in /etc/passwd nologin enthalten
Beispiel 4: Zeigen Sie die Zeilen in /etc/passwd an, die root enthalten, und geben Sie die Zeilennummern zusammen aus
Beispiel 5:
Neue Benutzer abscheulich, abscheulich, anomie , atomisieren, reguläre Ausdrücke schreiben, die ihnen entsprechen
Beispiel 6 : Neue Benutzer erstellen Alex213sb, Wpq2222b, yH438PIG, egon666, egonFiltern Sie die Zeilen heraus, in denen der Benutzername aus Buchstaben+Zahlen+Buchstaben besteht
Beispiel 7: Alle Dateinamen anzeigen, die root im Verzeichnis /etc enthalten
Beispiel 8: Alle Kommentare und alle Leerzeilen in /etc/ssh/sshd_config herausfiltern
Solange Sie fleißig üben, werden Sie es tun Seien Sie sehr schnell. Sie werden die Verwendung des grep-Befehls beherrschen^^
Das obige ist der detaillierte Inhalt vonShell-Programmierung – wie verwende ich den grep-Befehl?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!