Heim  >  Artikel  >  Betrieb und Instandhaltung  >  Shell-Programmierung – wie verwende ich den grep-Befehl?

Shell-Programmierung – wie verwende ich den grep-Befehl?

PHP中文网
PHP中文网Original
2017-06-20 11:12:492477Durchsuche

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn