Heim  >  Artikel  >  php教程  >  Linux grep-Befehl

Linux grep-Befehl

高洛峰
高洛峰Original
2016-12-13 14:00:091186Durchsuche

1. Funktion
Der grep-Befehl im Linux-System ist ein leistungsstarkes Textsuchwerkzeug. Es kann reguläre Ausdrücke verwenden, um Text zu durchsuchen und die passenden Zeilen auszudrucken. Der vollständige Name von grep lautet Global Regular Expression Print und stellt die globale Version des regulären Ausdrucks dar. Seine Nutzungsberechtigungen gelten für alle Benutzer.

2. Format
grep [Optionen]

3. Hauptparameter
[Optionen] Hauptparameter:
-c: Nur die Anzahl der übereinstimmenden Zeilen ausgeben.
-I: Unempfindlich gegenüber Groß- und Kleinschreibung (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.
Hauptparameter des Musters für reguläre Ausdrücke:
: 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.
[-]: Bereiche wie [A-Z], also A, B, C bis Z, erfüllen alle die Anforderungen.
. : Alle Einzelzeichen.
*: Es gibt Zeichen, die Länge kann 0 sein.

Ein einfaches Beispiel mit dem grep-Befehl
$ grep ‘test’ d*
Zeigt die Zeilen an, die test in allen 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 mit jeweils mindestens 5 aufeinanderfolgenden Kleinbuchstaben enthalten.
$ grep 'w(es)t.*1′ aa
Wenn west übereinstimmt, wird es im Speicher gespeichert und als 1 markiert und dann nach einer beliebigen Anzahl von Zeichen (.*) gesucht, gefolgt von diesen Zeichen Durch ein weiteres es(1) wird die Zeile 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. Der Grep-Befehl verwendet komplexe 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 magischen SysRQ-Schlüssel?
where file 'sysrp. txt 'Enthält diese Zeichenfolge, in der die Funktionalität von SysRQ erläutert wird.
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. Hier gibt es zwei Lösungen:
Bitten Sie ausdrücklich, das Unterverzeichnis zu durchsuchen: grep -r
oder ignorieren Sie das Unterverzeichnis: grep -d skip
Wenn viel ausgegeben wird, können Sie es an „less“ weiterleiten. zum Lesen:
$ grep magic /usr/src/Linux/Documentation/* | less
Auf diese Weise können Sie 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: Es werden nur übereinstimmende Dateinamen aufgelistet,
grep -L Musterdateien: Nicht übereinstimmende Dateinamen werden aufgelistet,
grep -w Musterdateien: Nur übereinstimmende Dateinamen werden aufgelistet Wort, nicht Teil der Zeichenfolge (z. B. passend zu „magic“, nicht „magical“),
grep -C-Zahlenmusterdateien: Der übereinstimmende Kontext zeigt jeweils [Zahl]-Zeilen an,
grep-Muster1 |. Zeilen anzeigen, die mit Muster1 oder Muster2 übereinstimmen,
grep-Muster1-Dateien |. Zeilen anzeigen, die sowohl mit Muster1 als auch mit Muster2 übereinstimmen.

grep -n-Musterdateien zeigen die Informationen zur Zeilennummer an

grep -c-Musterdateien finden die Gesamtzahl der Zeilen

Es gibt auch einige spezielle Symbole für die Suche:
< und > markieren den Anfang und das Ende von Wörtern.
Zum Beispiel:
grep man * passt zu „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: Passende Elemente aus mehreren Dateien finden
-v: Nicht übereinstimmende Zeilen finden
-n: Zeilen und Zeilenbeschriftungen drucken, die Übereinstimmungen enthalten

2. RE (regulärer Ausdruck)
Ignoriert die ursprüngliche Bedeutung von Sonderzeichen in regulären Ausdrücken
^ Entspricht der Startzeile des regulärer Ausdruck
$ Entspricht der Endzeile des regulären Ausdrucks
< Beginnend mit der Zeile, die dem regulären Ausdruck entspricht
> wie [A] bedeutet, dass A die Anforderungen erfüllt
[ - ] bedeutet, dass A, B, C bis Z alle die Anforderungen erfüllen
* alle Zeichen Länge kann 0 sein

3. Beispiel
# ps -ef | # mehr size.txt-Inhalt der Größendatei
b124230
b034325
a081016
m7187998
m7282064
a022021
a061048
m9 324822
b103303
a013386
b044525
m8987131
B081016
M45678
B103303
BADc2345

# more size.txt |. grep '[a-b]' range; such as [A-Z] A , B, C bis Z erfüllen alle die Anforderungen
b124230
b034325
a081016
a022021
a061048
b103303
a013386
b04452 5.
# mehr Größe. txt |. grep '[a-b]'*
b124230
b034325
a081016
m7187998
m7282064
a022021
a061048
m93 2482 2
b103303
a013386
b044525
m8987131
B081016
M45678
B103303
BADc2345

# more size.txt |. grep 'b' einzelnes Zeichen; wie [A] bedeutet A erfüllt die Anforderungen
b124230
b034325
b103303
b044525
# more size.txt |. grep '[bB]'
b124230
b034325
b103303
b044525
B081016
B103303
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 entspricht der Startzeile 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 | 'b1..*3 ' -i : Groß-/Kleinschreibung ignorieren

b124230
b103303
B103303

# mehr size.txt |. grep -iv 'b1..*3' - v: Nicht enthaltene übereinstimmende Zeilen finden

b034325
a081016
m7187998
m7282064
a022021
a061048
m9324822
a01. 3386
b044525
m8987131
B081016
M45678
BADc2345

# more size.txt |. grep -in 'b1..*3'
1:b124230
9:b103303
15:B103303

# grep '$' /etc/init.d/nfs.server |. wc -l
128
# grep '$' /etc/init.d/nfs.server |. wc -l Ignoriert 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" ]; while [ $wtime -gt 0 ]; >wtime= `expr $wtime - 1`
if [ $wtime -eq 0 ]; then
echo „Usage: $0 { start | stop }“

# more size.txt

die Testdatei
ihre sind Dateien
Das Ende

# grep 'the' size.txt
die Testdatei
ihre sind Dateien

# grep ' die Testdatei
ihre Dateien

# grep 'the>' size.txt
die Testdatei

# grep '' size.txt
die Testdatei

# grep '<[Tt]he>' =============================================== ==============

1, Einführung
Ein vielseitiges Textsuchtool mit regulären Ausdrücken. Dieses php?name=%C3%FC%C1 %. EE" onclick="tagshow(event)" class="t_tag">Der Befehl ist ursprünglich ein php?name=%C3%FC%C1%EE" im ed-Zeileneditor ="t_tag">Befehl/Filter:
g/re/p – global – regulärer Ausdruck – drucken.
Grundformat
grep-Muster [Datei...]
(1) grep-Suchzeichenfolge [Dateiname]
(2 ) grep regulärer Ausdruck [Dateiname]
sucht nach allen Vorkommen von Muster in der Datei. Muster kann entweder die zu durchsuchende Zeichenfolge oder ein regulärer Ausdruck sein.
Hinweis: Verwenden Sie bei der Eingabe der Zeichenfolge am besten doppelte Anführungszeichen durchsucht werden soll/und wenn Sie reguläre Ausdrücke für den Mustervergleich verwenden, achten Sie auf die Verwendung von einfachen Anführungszeichen

2, grep-Option
-c Nur die Anzahl der übereinstimmenden Zeilen ausgeben
-i unterscheidet nicht zwischen Groß- und Kleinschreibung (für einzelne Zeichen)
-n zeigt übereinstimmende Zeilennummern an
-v zeigt nicht alle Zeilen an, die keinen passenden Text enthalten
- 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) Mehrere Dateien abfragen
grep "sort" *.doc #Siehe Dateinamenübereinstimmung

(2) Zeilenabgleich: Anzahl der übereinstimmenden Zeilen ausgeben
grep -c "48" data.doc #Dokument ausgeben Anzahl der Zeilen mit 48 Zeichen

(3) Abgleich anzeigen Zeilen und Zeilennummern
grep -n "48" data.doc #Alle Zeilen und Zeilennummern anzeigen, die mit 48 übereinstimmen

( 4) Nicht übereinstimmende Zeilen anzeigen
grep -vn "48" Daten. 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ß- und Kleinschreibung beachten
grep -i "ab" data.doc #Alle Zeilen ausgeben, die die Zeichenfolge ab oder Ab enthalten

4, Anwendung regulärer Ausdrücke

(1) Anwendung von regulären Ausdrücken (Hinweis: Es ist am besten, reguläre Ausdrücke in einfache Anführungszeichen zu setzen)
grep '[239].doc     #Alle Zeilen ausgeben, die mit 2, 3 oder 9 beginnen und aus zwei Zahlen bestehen

(2) Nichtübereinstimmungstest
grep '^[^48]' data.doc  #Keine Zeilen ab Zeile 48 abgleichen

(3) Erweiterten Mustervergleich verwenden
grep -E '219 |216' data.doc

(4) ...
Dies Es ist notwendig, reguläre Ausdrücke kontinuierlich in der Praxis anzuwenden und zusammenzufassen und kompetent zu 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 # Abfrage mit 5 Zeilen, die mit zwei Großbuchstaben beginnen und enden


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
Vorheriger Artikel:Linux SVN verwendenNächster Artikel:Linux SVN verwenden