正則表達(dá)式分兩類:基本正則表達(dá)式(BRE)和擴展正則表達(dá)式(ERE)。
基本正則表達(dá)式的元字符含義:
1、.:匹配任何單個字符
2、[]:匹配指定范圍內(nèi)的單個字符
3、[^]:匹配指定范圍外的單個字符
4、*:匹配其前面任意次數(shù)的字符
5、\?:匹配其前面0或1次
6、\+:匹配其前面1或多次
7、\{m\}:精確匹配m次
8、\{m,n\}:匹配至少m次,最多n次
9、.*:匹配任意長度的任意字符
10、^:行首錨定,
11、$:行尾錨定
12、\:詞首錨定(也可以用\b)
13、\&;:詞尾錨定(也可以用\b)
14、^$:匹配空白行
15、\(\):常與\n(n為數(shù)字)一起用,用來匹配某單個或多個字符組合的重現(xiàn)次數(shù)
二、擴展正則表達(dá)式的元字符含義:
1、.:匹配任何單個字符
2、[]:匹配指定范圍內(nèi)的單個字符
3、[^]:匹配指定范圍外的單個字符
4、*:匹配其前面任意次數(shù)的字符
5、?:匹配其前面0或1次
6、+:匹配其前面1或多次
7、{m}:精確匹配m次
8、{m,n}:匹配至少m次,最多n次
9、.*:匹配任意長度的任意字符
10、^:行首錨定,
11、$:行尾錨定
12、\:詞首錨定(也可以用\b)
13、\&;:詞尾錨定(也可以用\b)
14、^$:匹配空白行
15、():常與\n(n為數(shù)字)一起用,用來匹配某單個或多個字符組合的重現(xiàn)次數(shù)
16、|:匹配|符號前或后的字符
三、可以匹配正則表達(dá)式的命令有:(這里只說grep命令)
1、grep:grep用基本正則表達(dá)式來匹配文本行。
格式:grep [OPTIONS] PATTERN [FILE...]
grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]
選項:
-E:使用擴展正則表達(dá)式進(jìn)行匹配(相當(dāng)于egrep)
-F:相當(dāng)于fgrep
-i:匹配時忽略大小寫
-v:顯示不匹配模式的行
-o:只顯示匹配到的行
-q:靜默模式
--color=auto:對匹配到的字符做高亮顯示
四、例子:
1、顯示/etc/passwd文件中以bash結(jié)尾的行;
![](/d/20211018/cc5acab59f315cb409729aae939c6714.gif)
2、顯示/etc/passwd文件中的兩位數(shù)或三位數(shù);
![](/d/20211018/fe278a323699d5eee029b51c25763814.gif)
3、 顯示'netstat -tan'命令結(jié)果中以'LISTEN'后跟0個、1個或多個空白字符結(jié)尾的行
![](/d/20211018/3c00d6073959ad465ec049146027dd3b.gif)
4、添加用戶bash,testbash, basher以及nologin用戶(nologin用戶的shell為/sbin/nologin);而后找出/etc/passwd文件中用戶名同shell名的行;
![](/d/20211018/92b43c3ea7f820ccac0c0778f20fe9db.gif)
5、顯示當(dāng)前系統(tǒng)上root、centos或user1用戶的默認(rèn)的shell和UID;
![](/d/20211018/b7e1a22038b1efae38cc109ed79f1223.gif)
6、找出/etc/rc.d/init.d/functions文件中某單詞(單詞中間可以存在下劃線)后面跟著一組小括號的行
![](/d/20211018/6908c732772e34928a949b8d9ccd0878.gif)
7、使用echo輸出一個路徑,而后egrep找出其路徑基名;
進(jìn)一步地:使用egrep取出其目錄名
![](/d/20211018/b6262e7605137cbc82a6197d433c0bf3.gif)
![](/d/20211018/3c021bce0b0e795511be9f7ce4fd1051.gif)
8、找出ifconfig命令執(zhí)行結(jié)果中1-255之間的數(shù)字;
![](/d/20211018/fe73fe20e2d69d527806152c800c0e17.gif)