Dieses Mal werde ich Ihnen die Verwendung von Linux grep und regulären Ausdrücken vorstellen Was sind die Vorsichtsmaßnahmen für die Verwendung von Linux grep und regulären Ausdrücken? Schauen Sie mal rein.
Einführung in grep
Grep ist ein leistungsstarkes Textsuchwerkzeug, das reguläre Ausdrücke verwenden kann, um Text zu durchsuchen und die Zeilen abzugleichen. Drucken Sie es aus. 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 Referenzen auf reguläre Ausdrücke, aber die Abfrage ist extrem schnell). grep ist einer der drei Musketiere der Linux-Textverarbeitung.
So verwenden Sie grep
So verwenden Sie:
grep [OPTIONS] PATTERN [FILE...]
grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]
Gemeinsame Optionen:
--color=auto: Färben Sie den übereinstimmenden Text und markieren Sie ihn;
-i: Ignorieren Sie die Groß-/Kleinschreibung von Zeichen
-o: Zeigen Sie nur die übereinstimmende Zeichenfolge an
-v: Zeigt Zeilen an, die nicht mit dem Muster übereinstimmen können
-E: Unterstützt die Verwendung erweiterter regulärer Ausdrücke
-q: Silent-Modus, d. h. es werden keine Informationen ausgegeben
-A #: Zeigt die mit dem Muster übereinstimmenden Zeilen und die # Zeilen danach an
-B #: Zeigt die mit dem Muster übereinstimmenden Zeilen und die # Zeilen davor an
-C #: Zeigt die mit dem Muster übereinstimmenden Zeilen und die #-Zeilen davor und danach an
Hinweis: Bei der Verwendung von grep-Matching müssen Sie doppelte Anführungszeichen verwenden (einfache Anführungszeichen sind starke Anführungszeichen), um zu verhindern, dass das System Fehler macht es für Parameter oder spezielle Befehle und die Meldung eines Fehlers.
Erweiterte grep-Verwendung
Verwendung:
egrep [OPTIONS] PATTERN [FILE...] grep -E [OPTIONS] PATTERN [FILE...]
-i: Groß-/Kleinschreibung von Zeichen ignorieren
- o: Nur die übereinstimmende Zeichenfolge selbst anzeigen
-v: Zeilen anzeigen, die nicht mit dem Muster übereinstimmen
-q: Stiller Modus, d. h. es werden keine Informationen ausgegeben
-A #: Zeilen anzeigen die mit dem Muster übereinstimmen Die übereinstimmende Zeile und die # Zeilen danach
-B #: Zeigt die Zeile an, mit der das Muster übereinstimmt, und die # Zeilen davor
-C #: Zeigt die Zeile an, mit der das Muster übereinstimmt und die # Zeilen davor und danach
-G :Unterstützt grundlegende reguläre Ausdrücke
grep Metazeichen für reguläre Ausdrücke
'^': Anker der Anfang der Zeile
'$': Ankerzeilenende
'.': Übereinstimmung mit einem beliebigen Zeichen
'*': Übereinstimmung mit null oder mehr vorherigen Zeichen
'? ': Übereinstimmung mit dem Zeichen davor 0 oder 1 Mal; '+': Übereinstimmung mit dem Zeichen davor 1 Mal oder mehrmals; Übereinstimmung mit dem Zeichen davor. Zeichen m-mal (für Escape-Zeichen)
'{m,n}': Übereinstimmung mit dem vorhergehenden Zeichen mindestens m-mal und höchstens n-mal
'[]' : Entspricht einem angegebenen Bereich Zeichen innerhalb |. '[^]' entspricht jedem einzelnen Zeichen außerhalb des angegebenen Bereichs
'<' oder 'b': verankert den Anfang eines Wortes, '>' ': verankert das Ende eines Wortes (Verfügbar
()': Behandelt mehrere Zeichen als Ganzes
Rückwärtsreferenz
: Referenzen die vorherige Gruppierung Die mit dem Muster übereinstimmenden Zeichen in Klammern
Der mit dem Muster in Gruppenklammern übereinstimmende Inhalt kann von der Engine für reguläre Ausdrücke automatisch in internen Variablen aufgezeichnet werden: 1: Muster aus dem left Von links beginnend wird der Inhalt durch das Muster zwischen der ersten linken Klammer und der passenden rechten Klammer abgeglichen
2: Das Muster beginnt von links, das Muster zwischen der zweiten linken Klammer und der passenden rechten Klammer wird abgeglichen Inhalt...
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 Matching-Methoden.
[:digit:] entspricht jeder einzelnen Ziffer
[:lower:] entspricht jedem einzelnen Kleinbuchstaben
[:upper:] 匹配任意单个大写字母
[:alpha:] 匹配任意单个字母
[:alnum:] 匹配任意单个字母或数字
[:punct:] 匹配任意单个符号
[:space:] 匹配单个空格
一些地方取消了转义字符的使用:
‘?‘:匹配其前面的字符0次或者1次;
‘+':匹配其前面的字符1次或者多次;
‘{m}‘:匹配其前面的字符m次(\为转义字符)
‘{m,n}':匹配其前面的字符至少m次,至多n次
():将一个或多个字符捆绑在一起,当做一个整体进行处理,反向引用照常使用。
‘|':或(注:‘C|cat'为C与cat,‘(C|c)at才是Cat与cat')
练习题:
1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次
[root@localhost ~]# who | cut -d' ' -f1|uniq root
2、取出最后登录到当前系统的用户的相关信息
[root@localhost ~]# id `last | head -1 | cut -d' ' -f1` uid=0(root) gid=0(root) groups=0(root)
3.取出当前系统上被用户当做其默认shell最多的那个shell
[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' ' -f10 192.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 -l
8.取出/etc/group第三个字段数值最小的10个组的名字
[root@localhost ~]# sort -t: -k3 -n /etc/group|head -10 |cut -d':' -f1 root bin daemon sys adm tty disk lp mem 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 0 UUID=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
相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!
推荐阅读:
Das obige ist der detaillierte Inhalt vonDie Verwendung von Linux grep und regulären Ausdrücken. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!