Heim  >  Artikel  >  php教程  >  Detaillierte Erläuterung des grep-Befehls und zugehörige Beispiele

Detaillierte Erläuterung des grep-Befehls und zugehörige Beispiele

高洛峰
高洛峰Original
2016-12-13 14:40:171084Durchsuche

1. Übereinstimmung mit Zeichen

. Übereinstimmung mit jedem einzelnen Zeichen

[ ] Übereinstimmung mit jedem Zeichen innerhalb des angegebenen Bereichs

[^] Übereinstimmung mit jedem Zeichen innerhalb des angegebenen Bereichs

[:alpha:] Alphabetische Zeichen

[:lower:] Kleingeschriebene alphabetische Zeichen

[:upper:] Großgeschriebene alphabetische Zeichen

[:digit : ] Zahlen

[:alnum:] Alphanumerische Zeichen

[:space:] Leerzeichen (Drucken verboten) wie Wagenrücklauf, Zeilenvorschub, vertikale Tabulatortaste und Feed-Seitenumbrüche

[:punct:] Satzzeichen

[:cntrl:] Steuerzeichen (Drucken verboten)

[:print:] Druckbare Zeichen

Verwenden Sie im Allgemeinen zwei Quadrate Bei der Verwendung werden Klammern verwendet, die in den folgenden Beispielen verwendet werden.

2. Anzahl der Übereinstimmungen

* Übereinstimmung mit dem vorherigen Zeichen jederzeit

.* Übereinstimmung mit jedem Zeichen beliebiger Länge (beachten Sie den Greedy-Modus, z. B. grep "r). *t" /etc/passwd )

x{m,n} Gibt an, dass das vorangehende Zeichen mindestens m-mal und höchstens N-mal vorkommt.

x{m,} Gibt an, dass das vorangehende Zeichen mindestens m-mal vorkommt.

x{0,n} Gibt an, dass das vorhergehende Zeichen höchstens N-mal vorkommt.

x {m} Genaue Übereinstimmung m Mal

? Übereinstimmung mit dem vorhergehenden Zeichen 0 oder 1 Mal

3. Anker

1.^ Anker am Anfang der Zeile grep "^ r..t " /etc/passwd

2.$ Ankerzeilenende grep "h$" /etc/passwd

3.^$ Anker-Leerzeile grep "^$" /etc /passwd

4.< (b) Anker am Wortanfang grep "

5.> Der Wortanfang grep "r ..t>" /etc/passwd

Beispiel (leicht zu verwechseln):

enthält mindestens ein Leerzeichen grep "[[:space:] ]{1,}“ /etc/passwd

enthält mindestens ein Nicht-Leerzeichen, grep „[^[:space:]]{1,}“ /etc/passwd

tut es kein Leerzeichen haben grep -v "[^[:space :]]{1,}" /etc/passwd

6 () Gruppenzeichen grep "(l..e).*1r"

Beispiel:

grep --color "l([13]):1:.*:1" /etc/inittab

4. Optionen

-v Das Ergebnis negieren

-i Die Groß-/Kleinschreibung von Buchstaben ignorieren

-o Nur die übereinstimmende Zeichenfolge anzeigen (anderer Inhalt der Zeile wird nicht angezeigt)

- E Unterstützt erweiterte reguläre Ausdrücke

-A n n Zeilen unterhalb der übereinstimmenden Zeile anzeigen

-B n n Zeilen oberhalb der übereinstimmenden Zeile anzeigen

-C n n Zeilen darüber anzeigen und unter der übereinstimmenden Zeile

Übung:

1. Finden Sie relevante Informationen zu Benutzer1 im System. (Benutzer11, myuser1 im Voraus erstellen) (Fehleranfällig)

grep "user1" /etc/passwd Alle Zeilen, die user1 enthalten

grep "" /etc/passwd Surface OK , aber das Hinzufügen der folgenden Benutzer funktioniert nicht

useradd -c "user1's uncle" /etc/passwd -c is a comment

grep "^" Success Übereinstimmung

2. Finden Sie relevante Informationen über Benutzer im System, die mit „Benutzer“ gefolgt von Zahlen beginnen.

grep "^user[0-9]{1,}>" /etc/passwd

3. Analysieren Sie die Eigenschaften der folgenden zwei Textzeilen in /etc/inittab Datei ablegen und genau schreiben Das gefundene ähnliche zweizeilige Muster

erfordert, dass die Zahlen in jeder Zeile gleich sein müssen.

l1:1:wait:/etc/rc.d/rc 1

l3:3:wait:/etc/rc.d/rc 3

grep " l([13]):1:.*:.* 1" inittab

Erweiterung: Übereinstimmung mit allen oben genannten Funktionen: grep "l([0-9]):1:.*:.* 1 " inittab

Wenn es 10 überschreitet, müssen Sie die Mindestübereinstimmung hinzufügen: grep "l([0-9]{1,}):1:.*:.* 1" inittab

4. Zeilen anzeigen, die mit s ohne Berücksichtigung der Groß-/Kleinschreibung in der Datei /proc/meminfo beginnen

grep „^[sS]“ /proc/meminfo

5 mit nologin Die Zeile

grep "nologin$" /etc/passwd

6 zeigt /etc/inittab an, beginnend mit #, gefolgt von einem oder mehreren Leerzeichen und dann gefolgt von beliebigen Zeilen mit Nicht-Leerzeichen

grep "^#[[:space:]]{1,}[^[:space:]]" /etc/inittab

7 /inittab enthält eine Zeile mit einer Zahl zwischen zwei Doppelpunkten

grep ":[0-9]:" /etc/inittab

8. Zeigt /boot/grub/grub.conf an mit einem oder mehreren Leerzeichen in der Datei

grep ":[0-9]:" /etc/inittab

9 Zeigt die Datei /etc/inittab an, die mit einer Zahl beginnt und endet mit einer Nummer, die mit derselben Nummer beginnt.

grep "^([0-9]).*1$" /etc/inittab

10. Nicht leere Zeilen in der Datei /etc/inittab anzeigen

grep -v "^$" /etc/inittab

11. Rufen Sie die relevante IP-Adresse der aktuellen Netzwerkschnittstelle ab (außer 127.0.0.1)

ifconfig |grep "inet addr" | grep - v "127.0.0.1"|. cut -d: -f2|cut -d" " -f1

ifconfig |grep -A 1 "eth" |grep -o "addr:[0-9.]{1,}"|cut -d: -f2

5. Erweiterte reguläre Ausdrücke

und regulären Ausdrücken:

() wird ersetzt durch ()

{} wird ersetzt durch {}

+ Mal des Abgleichs, Abgleich des vor Die Anzahl der Zeichen einmal oder mehrmals

| oder

Beispiel:

entspricht einer Ganzzahl zwischen 1 und 255, die im ifconfig-Ergebnis

erscheint ifconfig |grep --color -E "<([1-9]|[1-9][0-9]|1[1-9][0-9]|2[0-5][0- 5 ])>"


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