Heim  >  Artikel  >  Betrieb und Instandhaltung  >  Einführung in die Verwendung des Linux-Befehls grep

Einführung in die Verwendung des Linux-Befehls grep

巴扎黑
巴扎黑Original
2017-09-04 14:12:052286Durchsuche

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 und versuchen Sie es erneut.

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 '' stimmt nur mit 'man' überein, nicht mit anderen Zeichenfolgen wie 'Batman' oder 'manic'.

'^': 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

entspricht

> 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 🎜>

# ps -ef | Datei

b124230

b034325

a081016

m7187998

m7282064

a022021

a061048

m9324822

b103303

a013386

b044525

m8987131

B081016.

M 45678

B103303

BADc2345

# more size.txt | wie [A-Z], also A, B, C bis Z alle erfüllen die Anforderungen

b124230

b034325

a081016

a022021

a061048

b103303

a013386

b044525

# mehr size.txt |

m7187998

m7282064

a022021

a061048

m9324822

b103303 >a013386

b044525

m8987131

B081016

M45678

B103303

BADc2345

# mehr Größe .txt |. grep 'b' Einzelzeichen wie [A] Das heißt, A erfüllt die Anforderungen

b124230

b034325

b103303

b044525

# more size.txt |. grep '[ bB]'

b124230

b034325

b103303

b044525

B081016

B10330 3

BADc2345

# grep 'root' /etc/group

root::0:root

bin::2:root,bin,daemon

sys::3:root,bin,sys,adm

adm::4:root,adm,daemon

uucp::5:root,uucp

mail ::6:root

tty::7:root,tty,adm

lp::8:root, lp,adm

nuucp::9:root, nuucp

daemon::12:root,daemon

# grep '^root' /etc/group stimmt mit dem Anfang überein Zeile des regulären Ausdrucks

root::0:root

# grep 'uucp' /etc/group

uucp::5:root,uucp

nuucp::9:root,nuucp

# grep '

uucp::5:root,uucp

# grep ' root$' /etc/group entspricht der Endzeile des regulären Ausdrucks

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 '' size.txt

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!

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