Heim > Artikel > Betrieb und Instandhaltung > Detaillierte Erläuterung von Codefällen zu grep und regulären Ausdrücken in Linux
Grep ist ein leistungsstarkes Textsuchtool, das reguläre Ausdrücke verwenden kann, um Text zu durchsuchen und passende Zeilen auszudrucken. Normalerweise gibt es drei Versionen von grep: grep, egrep (entspricht grep -E) und fgrep. egrep ist erweitertes grep und fgrep ist schnelles grep (feste Zeichenfolge zum Durchsuchen von Text, unterstützt keine Verweise auf reguläre Ausdrücke, aber die Abfrage ist extrem schnell). grep ist einer der drei Musketiere der Linux-Textverarbeitung.
So verwenden Sie: grep [OPTIONS] PATTERN [FILE...]
grep [OPTIONS] [-e PATTERN |. [DATEI ...]
Allgemeine Optionen:
--color=auto: Färben Sie den übereinstimmenden Text und markieren Sie ihn
-i: Ignorieren Sie die Größe der Zeichen Schreiben Sie
-o: Nur übereinstimmende Zeichenfolgen anzeigen
-v: Zeilen anzeigen, die nicht mit dem Muster übereinstimmen können
-E: Unterstützt die Verwendung erweiterter regulärer Ausdrücke
-q: Stiller Modus, d. h. es werden keine Informationen ausgegeben
-A #: Zeigt die mit dem Muster übereinstimmenden Zeilen und # Zeilen danach an
-B #: Anzeige die mit dem Muster übereinstimmenden Linien und die # Zeilen davor und danach
-C #: Zeigt die mit dem Muster übereinstimmenden Zeilen und die # Zeilen davor und danach an
Hinweis: Erforderlich bei Verwendung von grep-Matching. Verwenden Sie doppelte Anführungszeichen (einfache Anführungszeichen sind starke Anführungszeichen), um zu verhindern, dass das System es mit Parametern oder speziellen Befehlen verwechselt und einen Fehler meldet.
Verwendung: egrep [OPTIONS] PATTERN [DATEI...]
grep -E [OPTIONS] ] MUSTER [DATEI...]
-i: Groß-/Kleinschreibung von Zeichen ignorieren
-o: Nur die übereinstimmende Zeichenfolge selbst anzeigen
-v: Anzeige, die nicht mit dem Muster übereinstimmt Zeile
-q: Silent-Modus, d. h. es werden keine Informationen ausgegeben
-A #: Zeigt die mit dem Muster übereinstimmende Zeile und die # Zeilen danach an
-B #: Zeigt die mit dem Muster übereinstimmende Zeile an Muster und seine # Vorherigen # Zeilen
-C #: Zeigt die Zeilen an, die mit dem Muster übereinstimmen, und die # Zeilen davor und danach
-G: Unterstützt grundlegende reguläre Ausdrücke
'^': Verankern Sie den Anfang der Zeile
'$': Verankern Sie das Ende der Zeile
'.': Entspricht einem beliebigen Zeichen
' *': Übereinstimmung mit null oder mehr vorherigen Zeichen
'?': Übereinstimmung mit dem vorhergehenden Zeichen 0 oder 1 Mal;
'{m}': Übereinstimmung mit dem Zeichen davor m-mal (für Escape-Zeichen) '{m,n}': Übereinstimmung mit dem Zeichen davor mindestens m-mal und höchstens n-mal ': Entspricht einem Zeichen innerhalb des angegebenen Bereichs | '[^]' Entspricht einem einzelnen Zeichen außerhalb des angegebenen Bereichs ' oder 'b': Ankerwort Überschrift, '. >' oder 'b': Ankerwortende (verfügbar cd22d989ebecf0466bc673f30afdaf24: vollständige Wörter finden) ()': mehrere Zeichen als Ganzes behandelnRückverweis: Verweisen Sie auf die Zeichen, die mit dem Muster in den vorherigen Gruppierungsklammern übereinstimmen
Der Inhalt, der mit dem Muster in den Gruppierungsklammern übereinstimmt oder automatisch von der Engine für reguläre Ausdrücke aufgezeichnet wird. In den internen Variablen:
1: Das Muster beginnt von links, der Inhalt entspricht dem Muster zwischen der ersten linken Klammer und der passenden rechten Klammer
2: Das Muster Beginnt von links, der Inhalt entspricht dem Muster zwischen der zweiten linken Klammer und der passenden rechten Klammer...
Erweiterte reguläre Ausdrücke unterscheiden sich geringfügig von regulären Ausdrücken:
[]': stimmt immer noch mit jedem einzelnen Zeichen innerhalb des angegebenen Bereichs überein; es gibt jedoch viele spezielle Übereinstimmungsmethoden.
[:digit:] entspricht jeder einzelnen Ziffer [:lower:] entspricht jedem einzelnen Kleinbuchstaben[:upper:] entspricht jedem einzelnen Kleinbuchstaben Ein einzelner Großbuchstabe Buchstabe
[:alpha:] entspricht jedem einzelnen Buchstaben
[:alnum:] entspricht jedem einzelnen Buchstaben oder jeder einzelnen Zahl [:punct:] entspricht jedem einzelnen Symbol [:space:] entspricht einem einzelnen Leerzeichen An einigen Stellen wird die Verwendung von Escape-Zeichen aufgehoben: '?': entspricht dem vorhergehenden Zeichen 0 oder 1 Mal ;'+': Übereinstimmung mit dem Zeichen davor mindestens einmal '{m}': Übereinstimmung mit dem Zeichen davor m-mal (für Escape-Zeichen)
'{m ,n}': Entspricht dem vorhergehenden Zeichen mindestens m-mal und höchstens n-mal (): Bündelt ein oder mehrere Zeichen und verarbeitet sie als Ganzes, umgekehrte Referenzen werden wie üblich verwendet. |': oder (
Hinweis
: 'C|cat' bedeutet C und Katze, '(C|c)at ist Katze und Katze')Übungsfragen :1. Listen Sie die Benutzernamen aller angemeldeten Benutzer auf dem aktuellen System auf. Hinweis: Wenn sich derselbe Benutzer mehrmals anmeldet, wird er nur einmal angezeigt
2. Holen Sie sich die relevanten Informationen des Benutzers heraus, der sich zuletzt beim aktuellen System angemeldet hat[root@localhost ~]# who | cut -d' ' -f1|uniqroot3. Holen Sie das Beste heraus Benutzer, die es als Standard-Shell auf dem aktuellen System verwenden. Diese Shell
[root@localhost ~]# id `last | head -1 | cut -d' ' -f1` uid=0(root) gid=0(root) groups=0(root)
[root@localhost ~]# cut -d':' -f7 /etc/passwd|uniq -c|sort -n|tail -1|cut -d' ' -f7/sbin/nologin
4.将/etc/passd中的第三个字段设置最大的后10个用户的信息全部改为大写保存至/tmp/maxuser.txt文件中
[root@localhost ~]# sort -t':' -k3 -n /etc/passwd|tail -10|tr 'a-z' 'A-Z' >/tmp/maxusers.txt [root@localhost ~]# cat /tmp/maxusers.txt NOBODY:X:99:99:NOBODY:/:/SBIN/NOLOGIN SYSTEMD-NETWORK:X:192:192:SYSTEMD NETWORK MANAGEMENT:/:/SBIN/NOLOGIN NGINX:X:996:994:NGINX WEB SERVER:/VAR/LIB/NGINX:/SBIN/NOLOGIN CHRONY:X:997:995::/VAR/LIB/CHRONY:/SBIN/NOLOGIN POLKITD:X:998:996:USER FOR POLKITD:/:/SBIN/NOLOGIN SYSTEMD-BUS-PROXY:X:999:997:SYSTEMD BUS PROXY:/:/SBIN/NOLOGIN DINGJIE:X:1000:1000:DINGJIE:/HOME/DINGJIE:/BIN/BASH JEFF:X:1001:1024:WOSHIDASHUAIBI:/HOME/JEFF:/BIN/BASH EGON:X:1002:1002::/HOME/EGON:/BIN/BASH NFSNOBODY:X:65534:65534:ANONYMOUS NFS USER:/VAR/LIB/NFS:/SBIN/NOLOGIN
5.取出当前主机的IP地址
[root@localhost ~]# ifconfig | egrep "inet.*broadcast.*"|cut -d' ' -f10192.168.0.133
6.列出/etc目录下所有已.conf结尾的文件的文件名,并将其名字转换为大写后保存至/tmp/etc.conf文件中
[root@localhost ~]# find /etc -name '*.conf' | egrep -o "[^/]*(\.conf)$"|tr 'a-z' 'A-Z' >/tmp/etc.conf [root@localhost ~]# cat /tmp/etc.conf RESOLV.CONF CA-LEGACY.CONF FASTESTMIRROR.CONF LANGPACKS.CONF SYSTEMD.CONF VERSION-GROUPS.CONF LVM.CONF LVMLOCAL.CONF ASOUND.CONF LDAP.CONF MLX4.CONF RDMA.CONF SMTPD.CONF
7.显示/var目录下一级子目录或文件的总数
[root@localhost ~]# ls /var | wc -l21
8.取出/etc/group第三个字段数值最小的10个组的名字
[root@localhost ~]# sort -t: -k3 -n /etc/group|head -10 |cut -d':' -f1 root bin daemon sys adm tty disklpmem kmem
9.将/etc/fstab和/etc/issue文件的内容合并为同一个内容后保存至/tmp/etc.test文件中
[root@localhost ~]# cat /etc/fstab /etc/issue > /tmp/etc.test [root@localhost ~]# cat /tmp/etc.test # # /etc/fstab # Created by anaconda on Sat May 13 10:12:58 2017# # Accessible filesystems, by reference, are maintained under '/dev/disk'# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info#/dev/mapper/cl-root / xfs defaults 0 0UUID=2789d01a-4e2b-47a5-9c3c-537641648663 /boot xfs defaults 0 0/dev/mapper/cl-swap swap swap defaults 0 0\S Kernel \r on an \m
对于正则表达式的使用需要多联系加强记忆,否则是用不好正则表达式的,在学习过程中切记多写多背。
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung von Codefällen zu grep und regulären Ausdrücken in Linux. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!