Vertreter / egrep Syntax: grep [-cinvABC] 'word' Dateiname -c: Druckt die Anzahl der Zeilen, die die Anforderungen erfüllen Drucken Sie die Zeile, die „halt“ enthält, und die beiden darauf folgenden Zeilen. [root@localhost ~]# grep -A2 'halt' /etc/passwd halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin Drucken Sie die Zeile, die „halt“ enthält, und die beiden Zeilen darüber. [root@localhost ~]# grep -B2 'halt' /etc/passwd sync:x:5:0:sync:/sbin:/bin/sync Herunterfahren: x: 6: 0: Herunterfahren: / sbin: / sbin / Herunterfahren halt:x:7:0:halt:/sbin:/sbin/halt Drucken Sie die Zeile, die „halt“ enthält, und die beiden Zeilen darüber und darunter. Zeilen mit einem bestimmten Schlüsselwort herausfiltern und die Zeilennummer ausgeben [root@localhost ~]# grep -n 'root' /etc/passwd 1:root:x:0:0:root:/root:/bin/bash 11:Operator:x:11:0:Operator:/root:/sbin/nologin Filtern Sie die Zeilen ohne ein bestimmtes Schlüsselwort und geben Sie die Zeilennummer aus [root@localhost ~]# grep -nv 'nologin' /etc/passwd 1:root:x:0:0:root:/root:/bin/bash 6:sync:x:5:0:sync:/sbin:/bin/sync 7:Herunterfahren:x:6:0:Herunterfahren:/sbin:/sbin/Herunterfahren 8:halt:x:7:0:halt:/sbin:/sbin/halt 26:test:x:511:511::/home/test:/bin/bash 27:test1:x:512:511::/home/test1:/bin/bash Alle Zeilen mit Zahlen herausfiltern [root@localhost ~]# grep '[0-9]' /etc/inittab # Upstart funktioniert, siehe init(5), init(8) und initctl(8). # 0 - halt (Initdefault NICHT hierauf setzen) # 1 - Einzelbenutzermodus # 2 - Multiuser, ohne NFS (Dasselbe wie 3, wenn Sie kein Netzwerk haben) # 3 - Vollständiger Mehrbenutzermodus # 4 - unbenutzt # 5 - X11 # 6 - Neustart (Initdefault NICHT hierauf setzen) id:3:initstandard: Alle Zeilen herausfiltern, die keine Zahlen enthalten [root@localhost ~]# grep -v '[0-9]' /etc/inittab # inittab wird von Upstart nur für den Standard-Runlevel verwendet. # # DAS HINZUFÜGEN ANDERER KONFIGURATIONEN HIER HAT KEINE AUSWIRKUNGEN AUF IHR SYSTEM. # # Die Systeminitialisierung wird durch /etc/init/rcS.conf gestartet # # Einzelne Runlevel werden von /etc/init/rc.conf gestartet # # Strg-Alt-Entf wird von /etc/init/control-alt-delete.conf gehandhabt # # Terminal-Gettys werden von /etc/init/tty.conf und /etc/init/serial.conf verwaltet. # mit Konfiguration in /etc/sysconfig/init. # # Informationen zum Schreiben von Upstart-Eventhandlern oder zum # # Standard-Runlevel. Die verwendeten Runlevel sind: # Entfernen Sie alle Zeilen, die mit „#“ beginnen. [root@localhost ~]# grep -v '^#' /etc/inittab id:3:initstandard: Entfernen Sie alle Leerzeilen und Zeilen, die mit „#“ beginnen. [root@localhost ~]# grep -v '^#' /etc/crontab |grep -v '^$' SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=Stamm HOME=/ In regulären Ausdrücken gibt „^“ den Zeilenanfang an, „$“ das Zeilenende und eine leere Zeile kann durch „^$“ dargestellt werden. Wie druckt man Zeilen, die nicht mit einem englischen Buchstaben beginnen? [root@localhost ~]# vim test.txt [root@localhost ~]# cat test.txt 123 ABC 456 abc2323 #laksdjf Allellllllll Schreiben Sie zum Experimentieren zunächst einige Zeilen mit Zeichenfolgen in test.txt. [root@localhost ~]# grep '^[^a-zA-Z]' test.txt 123 456 #laksdjf [root@localhost ~]# grep '[^a-zA-Z]' test.txt 123 456 abc2323 #laksdjf Wenn es eine Zahl ist, verwenden Sie das Format [0-9]. Natürlich können Sie manchmal auch das Format [15] verwenden, das nur 1 oder 5 enthält. Beachten Sie, dass es nicht als 15 gezählt wird. Wenn Sie Zahlen sowie Groß- und Kleinbuchstaben herausfiltern möchten, sollten Sie [0-9a-zA-Z] schreiben. Darüber hinaus hat [ ] eine andere Form, nämlich das [^-Zeichen], das andere Zeichen als die Zeichen in [ ] darstellt. Filtern Sie beliebige Zeichen und wiederholte Zeichen [root@localhost ~]# grep 'r..o' /etc/passwd Operator:x:11:0:Operator:/root:/sbin/nologin gopher:x:13:30:gopher:/var/gopher:/sbin/nologin vcsa:x:69:69:Eigentümer des virtuellen Konsolenspeichers:/dev:/sbin/nologin . steht für ein beliebiges Zeichen. Im obigen Beispiel werden die Zeilen herausgefiltert, die zwei Zeichen zwischen r und o enthalten. * steht für null oder mehr der vorhergehenden Zeichen. [root@localhost ~]# grep 'ooo*' /etc/passwd root:x:0:0:root:/root:/bin/bash lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin mail:x:8:12:mail:/var/spool/mail:/sbin/nologin uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin Operator:x:11:0:Operator:/root:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin „ooo*“ bedeutet oo, ooo, oooo … oder mehr „o“. Überlegen Sie jetzt, was die Kombination „.*“ bedeutet? [root@localhost ~]# grep '.*' /etc/passwd |wc -l 27 [root@localhost ~]# wc -l /etc/passwd 27 /etc/passwd „.*“ bedeutet null oder mehr beliebige Zeichen, einschließlich Leerzeilen. Geben Sie die Anzahl der Vorkommen des zu filternden Zeichens an [root@localhost ~]# grep 'o\{2\}' /etc/passwd root:x:0:0:root:/root:/bin/bash lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin mail:x:8:12:mail:/var/spool/mail:/sbin/nologin uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin Operator:x:11:0:Operator:/root:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin Sie können -E auch ohne das Escape-Zeichen \ verwenden. grep -E 'o{2}' /etc/passwd Hier wird { } mit Zahlen darin verwendet, die angeben, wie oft das vorherige Zeichen wiederholt werden soll. Im obigen Beispiel ist damit die Zeile gemeint, die zwei O’s enthält, also ‚oo‘. Beachten Sie, dass das Escape-Zeichen „\“ auf beiden Seiten von {} erforderlich ist. Darüber hinaus können wir {} auch verwenden, um einen Bereich darzustellen. Das spezifische Format ist „{n1,n2}“, wobei n1<n2 bedeutet, dass das vorherige Zeichen n1 bis n2 Mal wiederholt wird. n2 kann auch leer sein, was bedeutet, dass es größer oder gleich n1 Mal ist. Das oben erwähnte grep ist auch ein häufig verwendetes Tool, egrep. Einfach ausgedrückt ist letzteres eine erweiterte Version des ersteren. Wir können egrep verwenden, um Aufgaben zu erledigen, die grep nicht erledigen kann. Natürlich kann egrep auch Aufgaben erledigen, die grep erledigen kann. Wenn Sie damit Probleme haben, informieren Sie sich einfach über egrep, denn die Funktionen von grep reichen für Ihre tägliche Arbeit aus. Im Folgenden sind einige Verwendungen von egrep aufgeführt, die für grep nicht verwendet werden. Bearbeiten Sie zur Vereinfachung des Tests die Datei test.txt mit dem folgenden Inhalt: rot:x:0:0:/rot:/bin/bash Operator:x:11:0:Operator:/root:/sbin/nologin Operator:x:11:0:Operator:/root:/sbin/nologin roooot:x:0:0:/rooooot:/bin/bash 11111111111111111111111111111 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa Filtern Sie nach einem oder mehreren vorangehenden Zeichen [root@localhost ~]# egrep 'o+' test.txt rot:x:0:0:/rot:/bin/bash Operator:x:11:0:Operator:/root:/sbin/nologin Operator:x:11:0:Operator:/root:/sbin/nologin roooot:x:0:0:/rooooot:/bin/bash [root@localhost ~]# egrep 'oo+' test.txt Operator:x:11:0:Operator:/root:/sbin/nologin Operator:x:11:0:Operator:/root:/sbin/nologin roooot:x:0:0:/rooooot:/bin/bash [root@localhost ~]# egrep 'ooo+' test.txt Operator:x:11:0:Operator:/root:/sbin/nologin roooot:x:0:0:/rooooot:/bin/bash Filtert nach null oder einem Vorkommen des vorhergehenden Zeichens [root@localhost ~]# egrep 'o?' rot:x:0:0:/rot:/bin/bash Operator:x:11:0:Operator:/root:/sbin/nologin Operator:x:11:0:Operator:/root:/sbin/nologin roooot:x:0:0:/rooooot:/bin/bash 11111111111111111111111111111 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa [root@localhost ~]# egrep 'ooo?' Operator:x:11:0:Operator:/root:/sbin/nologin Operator:x:11:0:Operator:/root:/sbin/nologin roooot:x:0:0:/rooooot:/bin/bash [root@localhost ~]# egrep 'oooo?' Operator:x:11:0:Operator:/root:/sbin/nologin roooot:x:0:0:/rooooot:/bin/bash Filterzeichenfolge 1 oder Zeichenfolge 2 [root@localhost ~]# egrep 'aaa|111|ooo' test.txt Operator:x:11:0:Operator:/root:/sbin/nologin roooot:x:0:0:/rooooot:/bin/bash 11111111111111111111111111111 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa Anwendung von ( ) in egrep [root@localhost ~]# egrep 'r(oo)|(at)o' test.txt Operator:x:11:0:Operator:/root:/sbin/nologin Operator:x:11:0:Operator:/root:/sbin/nologin roooot:x:0:0:/rooooot:/bin/bash Verwenden Sie ( ), um ein Ganzes darzustellen. Beispielsweise bedeutet (oo)+ ein „oo“ oder mehrere „oo“. [root@localhost ~]# egrep '(oo)+' test.txt Operator:x:11:0:Operator:/root:/sbin/nologin Operator:x:11:0:Operator:/root:/sbin/nologin roooot:x:0:0:/rooooot:/bin/bash Oben sind alle relevanten Wissenspunkte zu den Linux-Befehlen grep und egrep aufgeführt, die dieses Mal vorgestellt werden. Vielen Dank für Ihr Lernen und Ihre Unterstützung für 123WORDPRESS.COM. Das könnte Sie auch interessieren:
|
<<: Beschreibung der Schreibmethode des Foreach-Arrays in Vue und des Traversal-Arrays in js
1. Ziehen Sie das Mysql-Image docker pull mysql:5...
Drei Modi Bridged (Bridge-Modus), NAT (Network Ad...
Inhaltsverzeichnis 1. Anweisungen zum Rendern von...
Der IE hat uns in der frühen Entwicklungsphase Ko...
In diesem Artikel wird die Verwendung von js- und...
Problembeschreibung Wenn filter im body verwendet...
[LeetCode] 183.Kunden, die nie bestellen Angenomm...
1. Hintergrund Wenn der Docker-Dienst gestartet w...
Der Docker Hub, den wir zuvor verwendet haben, wi...
Inhaltsverzeichnis 1. Komponentenregistrierung 2....
Wir müssen zunächst die Luftqualitätsdaten mit de...
Im Projekt gibt es eine Tabelle, die online bearb...
Inhaltsverzeichnis 1. Was ist vuex 2. Installatio...
Abschluss: Wenn in einer Multithread-Umgebung ein...
Inhaltsverzeichnis Vorwort 1. Was ist Selen? 2. N...