Heim  >  Artikel  >  Web-Frontend  >  Die Verwendung von Linux grep und regulären Ausdrücken

Die Verwendung von Linux grep und regulären Ausdrücken

php中世界最好的语言
php中世界最好的语言Original
2018-03-29 11:53:511995Durchsuche

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: Entspricht vollständigen Wörtern)

 ()': 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中文网其它相关文章!

推荐阅读:

怎么用正则把字符串分组

JS的正则replace搜索关键字高亮效果

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!

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