Dieses Mal gebe ich Ihnen Tipps zur Verwendung regulärer Ausdrücke unter Linux. Was sind die Vorsichtsmaßnahmen für die Verwendung regulärer Ausdrücke unter Linux? Das Folgende ist ein praktischer Fall.
1. Zusammensetzung
Gemeinsame Zeichen: gewöhnliche Zeichenfolgen, keine besondere Bedeutung
Sonderzeichen: haben besondere Bedeutung in regulären Ausdrücken
Gemeinsames Meta Zeichen [Sonderzeichen] in regulären Ausdrücken
2. Metazeichen in POSIX BRE [Basic] und ERE [Extended]
: Normalerweise Wird verwendet, um die Sonderbedeutung nachfolgender Zeichen ein- oder auszuschalten, z. B. (...) [ ist ein Escape-Zeichen, das die Sonderbedeutung des Symbols entfernt, (), {} usw. haben in der Shell eine Sonderbedeutung Bedeutung] Der Unterschied zwischen
und und:
[root@localhost ~]# cat -n test.txt
1 gd
2 god
3
4 gut
5 gut
6 goad
7
8 gboad
2.1, .: Entspricht jedem einzelnen Zeichen (außer null, das nicht leer sein darf) )
[root@localhost ~]# grep -n "o*" test.txt[root@localhost ~]# grep -n "." test.txt 🎜>6:goad
[root@localhost ~]# grep -n "*" test.txt
8:gboad
[root@localhost ~]# grep -n "go.d" test.txt
4:good
6:goad
2.2: Passen Sie das vorangehende Zeichen beliebig oft an, z. B. o, das kein o, ein o oder mehrere o sein kann
1:gd
2:god3:1 :gd4 :good
[root@localhost ~]# grep -n ".*" test.txt
5:goood
6:goad
7:
8:gboad
[root@localhost ~]# echo "gbad" >>test.txt
[ root@localhost ~]# echo "pbad" >>test.txt
[root@localhost ~]# echo "kgbad" >>test.txt
[root@localhost ~]# echo " poad" >>test.txt
[root@localhost ~]# grep -n "go*" test.txt [o kann weggelassen werden, das g vor o muss übereinstimmen]
1:gd
2:god
4:good
5:goood
6:goad
8:gboad
9:gbad
11:kgbad
*2.3, .: Entspricht jedem Zeichen (übereinstimmt mit allen), kann leer sein**
2:god
3:4:goodroot: x:0: 0:root:/root:/bin/bash5:goood
[root@localhost tmp]# grep "^root" /etc/passwd
6:goad
7:
8:gboad
9:gbad
10:pbad
11:kgbad
12:poad
[root@localhost ~]# grep -n "go.*" test.txt
2:god
4:good
5:goood
6:goad
[root@localhost ~]# grep -n "po.*" test.txt
12:poad
[root@localhost ~]# echo " pgoad" >>test.txt
[root@localhost ~]# grep -n "go.*" test.txt [Jedes Zeichen existiert nach der Übereinstimmung mit go und kann leer sein]
2:god
4:gut
5:gut
6:goad
13:pgoad
[root@localhost ~]#
[root@localhost ~]# grep -n "o.*" test.txt
2:god
4:good
5:goood
6:goad
8:gboad
12:poad
2.4, ^: Entspricht dem folgenden regulären Ausdruck, beginnend mit...
[root@localhost tmp]#
[root@localhost tmp]# grep "bash$" /etc/passwd | head -1
2.5, $: Entspricht dem unmittelbar vorhergehenden regulären Ausdruck, der mit... endet.
root:x:0:0:root: /root:/bin/ bash
[root@localhost tmp]#
"#|^$": entspricht Kommentarzeilen und Leerzeilen, die mit # beginnen[root@localhost tmp]# cat hosts
2.6, []: Übereinstimmung mit einem beliebigen Zeichen
in eckigen Klammern (z. B. [sS], Übereinstimmung mit s oder Übereinstimmung mit S), wobei Bindestriche (-) den Bereich der Bindestriche angeben (z. B. [(0 -9)], passend zu einem beliebigen Zeichen von 0–9);
192.168.200.1
192.168.200.3
23.c.56.1gd1456.1 .2.4
[root@localhost ~]# grep -E "go?d" test.txt
12.4.5.6.8
[root@localhost tmp]# grep -E '([0-9]{1,3}.){3}[0-9]{1,3} ' hosts
192.168.200.1
192.168.200.3
1456.1.2.4
12.4.5.6.8
[root@localhost tmp]# grep -E '^([0-9]{ 1,3}.){3}[0-9]{1,3}$' Hosts
192.168.200.1
192.168.200.3
[root@localhost tmp]#
2.7, ?: Entspricht null oder mehr Malen des vorherigen Zeichens
Gott
[root@localhost ~]#[root@localhost tmp]# cat testdo
tut
doxy
[root@localhost tmp]# grep - E „do(es)?“ test
do
does
doxy
[root@localhost tmp]#
3 (Grundlegende reguläre) Zeichen
{n,m}: Intervallausdruck, der mit dem einzelnen Zeichen übereinstimmt, bevor es [wiederholt, das folgende einzelne Zeichen wie https{0,1} wiederholt, d. h. s 0-1 Mal wiederholt. {n} bezieht sich auf eine n-fache Übereinstimmung; {n,m} bezieht sich auf eine n- bis m-fache Übereinstimmung, {n,} bezieht sich auf eine mindestens n-fache Übereinstimmung und {,m} entspricht höchstens m-maliger Übereinstimmung. [Escape-Zeichen]
4. Zeichen, die nur in POSIX ERE vorkommen (erweiterte reguläre Zeichen)
4.1, {n,m}: Gleiche Funktion als BREs {n,m}
[root@localhost tmp]# grep -E '^([0-9]{1,3}.){3}[0- 9]{ 1,3}$' Hosts
192.168.200.1
192.168.200.3
4.2, +: Entspricht einem oder mehreren der vorherigen regulären Ausdrücke
[root@localhost ~]# egrep "go+d" test.txt
Gott
gut
gut
[root@localhost ~]#
4.3, |: Zeigt die Übereinstimmung mehrerer Zeichenfolgen [oder Beziehungen] an
[root@localhost ~]# grep -E "3306|1521 " /etc/services
mysql 3306/tcp # MySQL
mysql 3306/udp # MySQL
n cube-lm 1521/tcp # nCube License Manager
ncube-lm 1521/udp # nCube License Manager
[root@localhost ~] #
4.4, ( ): Gruppenfilterung, Rückwärtsreferenz
Gruppenfilterung
[root@localhost ~]# echo "froh" >> test.txt
[root@localhost ~]# egrep "(la|oo)" test.txt
gut
gut
froh
() Rückverweis; wenn der vorherige übereinstimmende Teil Klammern verwendet, kann der Inhalt der ersten Klammer im späteren Teil als 1 ausgegeben werden;
[root@localhost tmp]# ifconfig |sed -rn 's#.*addr:(.*)(B.*)$#1#gp'
192.168 .4.27
5. Reguläre Ausdrucks-Metazeichen
5.1. b: Übereinstimmung mit einer Wortgrenze
[root@localhost tmp]# cat test
do
does
doxy
agdoeg
[root@localhost tmp]# grep "dob" test
do
[root @localhost tmp]# grep „bdo“ test
do
does
doxy
[root@localhost tmp]# grep „bdoes“ test
does
[ root@localhost tmp] # grep "bdob" test
do
[root@localhost tmp]#
B: Übereinstimmung mit Nicht-Wortgrenzen und b Im Gegenteil
[root@localhost tmp]# grep "doB" test
macht
doxy
agdoeg
[root@localhost tmp]# grep "dob" test
macht
[root@localhost tmp]#
5.3, d: Entspricht einem numerischen Zeichen, äquivalent zu [0-9]
5.4, D: Entspricht einem nicht -numerisches Zeichen, äquivalent zu [^0-9]
5,5, w: Entspricht Buchstaben, Zahlen und Unterstrichen, äquivalent zu [A-Za-z0-9_]
Es gibt viele Metazeichen, daher werde ich sie hier nicht alle auflisten
Fall: Optimierter Start
[root@localhost ~]# chkconfig --list| |network|rsyslog|sshd|sysstat" | awk '{print "chkconfig",$1,"off"}'|bash
believe Nach dem Lesen des Falls In diesem Artikel beherrschen Sie die Methode. Weitere spannende Informationen finden Sie in anderen verwandten Artikeln auf der chinesischen PHP-Website!
Empfohlene Lektüre
So verwenden Sie scss in Angular-Projekten
Das obige ist der detaillierte Inhalt vonTipps zur Verwendung regulärer Ausdrücke unter Linux. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!