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