Heim > php教程 > PHP开发 > Grundlegender Linux-Befehl zur Textfilterung grep

Grundlegender Linux-Befehl zur Textfilterung grep

高洛峰
Freigeben: 2016-11-08 14:49:38
Original
1244 Leute haben es durchsucht

Es ist oft notwendig, Text oder Ausgabeinhalte unter Linux zu filtern. Der am häufigsten verwendete Filterbefehl ist grep

grep [OPTIONS] PATTERN [FILE...]
Nach dem Login kopieren

grep ruft jede Eingabezeile Zeile für Zeile ab, wenn die Eingabezeile das Muster PATTERN enthält , die Ausgabe dieser Zeile. Das MUSTER hier ist ein regulärer Ausdruck (siehe vorherigen Artikel, in diesem Artikel wird grep als Beispiel verwendet).

Geben Sie die Zeile mit root in der Datei /etc/passwd aus:

[root@centos7 temp]# grep root /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
Nach dem Login kopieren

oder holen Sie sie aus der Standardeingabe:

[root@centos7 temp]# cat /etc/passwd | grep root
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
Nach dem Login kopieren
Nach dem Login kopieren

Was zu beachten ist ist: wenn grep Wenn die Eingabe sowohl aus Dateien als auch aus der Standardeingabe stammt, ignoriert grep den Inhalt der Standardeingabe und verarbeitet ihn nicht, es sei denn, das Symbol - wird zur Darstellung der Standardeingabe verwendet:

[root@centos7 temp]# cat /etc/passwd | grep root
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
Nach dem Login kopieren
Nach dem Login kopieren

Zu diesem Zeitpunkt zeigt grep an, welche Ergebnisse aus welchen Dateien aus der Standardeingabe stammen.

Geben Sie die mit root beginnenden Zeilen in der Datei /etc/passwd und der Datei /etc/group aus:

[root@centos7 temp]# cat /etc/passwd | grep root /etc/passwd -
/etc/passwd:root:x:0:0:root:/root:/bin/bash
/etc/passwd:operator:x:11:0:operator:/root:/sbin/nologin
(标准输入):root:x:0:0:root:/root:/bin/bash
(标准输入):operator:x:11:0:operator:/root:/sbin/nologin
Nach dem Login kopieren

Zu diesem Zeitpunkt zeigt grep an, welche Ergebnisse aus der Datei und stammen die aus der Standardeingabe stammen.

Geben Sie die Zeilen aus, die mit root beginnen, in der Datei /etc/passwd und der Datei /etc/group:

[root@centos7 temp]# grep "^root" /etc/passwd /etc/group
/etc/passwd:root:x:0:0:root:/root:/bin/bash
/etc/group:root:x:0:
Nach dem Login kopieren

Geben Sie die Zeilen aus, die mit /bin/bash enden, in der Datei /etc /passwd:

[root@centos7 temp]# grep "/bin/bash$" /etc/passwd
root:x:0:0:root:/root:/bin/bash
learner:x:1000:1000::/home/learner:/bin/bash
Nach dem Login kopieren

Beachten Sie, dass PATTERN in den beiden obigen Beispielen in doppelte Anführungszeichen gesetzt wird, um zu verhindern, dass es von der Shell analysiert wird.

Geben Sie die Zeilen in der Datei /etc/passwd aus, die nicht mit einem Buchstaben in a-s beginnen:

[root@centos7 temp]# grep "^[^a-s]" /etc/passwd 
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
Nach dem Login kopieren

Hier müssen Sie die unterschiedlichen Bedeutungen zwischen den beiden ^, dem ersten, verstehen ^ stellt die erste Zeile dar, das zweite erste Zeichen ^ in [] bedeutet Negation.

In der Ausgabedatei /etc/passwd erscheint das Zeichen 0 dreimal oder öfter hintereinander (beachten Sie das Escape-Zeichen ''):

[root@centos7 temp]# grep "0\{3,\}" /etc/passwd
learner:x:1000:1000::/home/learner:/bin/bash
Nach dem Login kopieren

Zum Beispiel in der Ausgabe Datei /etc/passwd, Zeilen, die mit den Zeichen r oder l beginnen:

[root@centos7 temp]# grep "^[r,l]" /etc/passwd
root:x:0:0:root:/root:/bin/bash
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
learner:x:1000:1000::/home/learner:/bin/bash
Nach dem Login kopieren

Option -i bewirkt, dass grep die Groß-/Kleinschreibung ignoriert, wenn Muster abgeglichen werden:

[root@centos7 temp]# grep -i abcd file 
ABCD
function abcd() {
[root@centos7 temp]#
Nach dem Login kopieren

Option -o bedeutet Ausgabe nur übereinstimmende Zeichen, während Nicht die gesamte Zeile:

[root@centos7 temp]# grep -oi abcd file 
ABCD
abcd
[root@centos7 temp]#
Nach dem Login kopieren

Option -c zählt die Anzahl der übereinstimmenden Zeilen:

[root@centos7 temp]# grep -oic abcd file 
2
[root@centos7 temp]#
Nach dem Login kopieren

Option -v zeigt inverse Übereinstimmung an, z. B. /etc/ passwd beginnt nicht mit /sbin Zeilen, die mit /nologin enden:

[root@centos7 temp]# grep -v "/sbin/nologin$" /etc/passwd
root:x:0:0:root:/root:/bin/bash
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
learner:x:1000:1000::/home/learner:/bin/bash
Nach dem Login kopieren

Option -f FILE bedeutet, dass jede Zeile in der Datei FILE als Muster abgeglichen wird:

[root@centos7 temp]# cat test
abcd
ABCD
[root@centos7 temp]# grep -f test file 
ABCD
function abcd() {
[root@centos7 temp]#
Nach dem Login kopieren

Option -x bedeutet, die gesamte Zeile abzugleichen:

[root@centos7 temp]# grep -xf test file 
ABCD
[root@centos7 temp]#
Nach dem Login kopieren

Option-w bedeutet, das ganze Wort abzugleichen:

[root@centos7 temp]# grep here file
here
there
[root@centos7 temp]# grep -w here file
here
[root@centos7 temp]#
Nach dem Login kopieren

Option-h bedeutet, den Dateinamen nicht auszugeben, wenn mehrere Dateien vorhanden sind:

[root@centos7 temp]# cat /etc/passwd|grep ^root - /etc/passwd -h
root:x:0:0:root:/root:/bin/bash
root:x:0:0:root:/root:/bin/bash
Nach dem Login kopieren

Option-n Zeigt die Anzeige von Zeilennummern an:

[root@centos7 temp]# grep -n "^[r,l]" /etc/passwd
1:root:x:0:0:root:/root:/bin/bash
5:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
24:learner:x:1000:1000::/home/learner:/bin/bash
Nach dem Login kopieren

Optionen -A N, -B N, -C N zeigt Ausgabeübereinstimmungszeilen und ihre „umgebenden Zeilen“ an

-A N 表示输出匹配行和其之后(after)的N行
-B N 表示输出匹配行和其之前(before)的N行
-C N 表示输出匹配行和其之前之后各N行
[root@centos7 temp]# grep -A 2 ^operator /etc/passwd
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
[root@centos7 temp]# grep -B2 ^operator /etc/passwd   
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
[root@centos7 temp]# grep -C1 ^operator /etc/passwd  
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
Nach dem Login kopieren

Option -F behandelt PATTERN als seine Literalübereinstimmung (ignoriert spezielle Bedeutungen von Zeichen) entspricht der Ausführung des Befehls fgrep:

[root@centos7 temp]# grep -F ^root /etc/passwd
[root@centos7 temp]#
Nach dem Login kopieren

Der Befehl hat keine Ausgabe

Die Option -E kann erweiterte reguläre Ausdrücke verwenden, genau wie die Ausführung des Befehls egrep:

[root@centos7 temp]# egrep "^root|^learner" /etc/passwd
root:x:0:0:root:/root:/bin/bash
learner:x:1000:1000::/home/learner:/bin/bash
Nach dem Login kopieren

Die Verwendung erweiterter regulärer Ausdrücke bedeutet, dass spezielle Bedeutungen von Zeichen ohne Escapezeichen ausgedrückt werden können, einschließlich ?, ,{,|,(und ).

Die Option -P bedeutet, den regulären Ausdruck von Perl für den Abgleich zu verwenden
Zum Beispiel:

[root@centos7 ~]# echo "helloworld123456"| grep -oP "\d+"
123456
[root@centos7 ~]#
Nach dem Login kopieren

Das „d“ im regulären Ausdruck von Perl bedeutet eine Zahl, was bedeutet, dass eins mit einer Zahl abgeglichen wird mehrmals (wie vim ).

Option -a behandelt Binärdateien als Textdateien:

[root@centos7 ~]# grep -a online /usr/bin/ls
%s online help: <%s>
[root@centos7 ~]#
Nach dem Login kopieren

Optionen --exclude=GLOB und --include=GLOB bedeuten, Dateien auszuschließen bzw. einzuschließen, die GLOB entsprechen, GLOB bedeutet Platzhalter (Informationen zur Verwendung von „find“ und „xargs“ finden Sie in der Einführung in die Grundbefehle 3):

[root@centos7 temp]# find . -type f | xargs grep --exclude=*.txt --include=test* bash
./test.sh:#!/bin/bash
[root@centos7 temp]#
Nach dem Login kopieren

Die leistungsstarken Filterfunktionen von grep beruhen auf der Kombination verschiedener Optionen und regulärer Ausdrücke

Verwandte Etiketten:
Erklärung dieser Website
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
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage