第11章
1傻唾、正則表達(dá)式介紹
?? 1只酥、什么是正則表達(dá)式:為處理大量字符串及文本而定義的一套規(guī)則和方法切揭。
?? 例:@=I am哩罪, 授霸!=oldboy,則echo " @!"就是輸出''I am oldboy"
三劍客的正則表達(dá)式特點(diǎn):
?1、為處理大量字符串及文本而定義的一套規(guī)則和方法
?2际插、其工作時(shí)以行為單位進(jìn)行碘耳,即一次處理一行
?3、通過(guò)正則表達(dá)可以將復(fù)雜的處理任務(wù)華繁為簡(jiǎn)
?4框弛、僅被三劍客(grep/egrep sed awk)命令支持辛辨,其他命令無(wú)法使用
? 2、為什么要學(xué)正則表達(dá)式
工作中會(huì)碰到大量字符串瑟枫,為了效率
? 3斗搞、有關(guān)正則表達(dá)式容易混淆的事項(xiàng)
?? 它和通配符有本質(zhì)區(qū)別,一個(gè)數(shù)據(jù)流慷妙,一個(gè)字符串
? 4僻焚、學(xué)正則表達(dá)的注意事項(xiàng)
? ?? 1、linux 正則表達(dá)是按照行為單位進(jìn)行處理的
? ?? 2膝擂、正則表達(dá)式公適合三劍客命令
? ?? 3虑啤、注意LC_ALL環(huán)境變量的設(shè)置
2、正則表達(dá)式的分類(lèi)
? ? ? ? 1架馋、基本正則表達(dá)式集合
尖角號(hào)^? 用法為^oldboy 表示匹配以oldboy單詞開(kāi)關(guān)的行
美元符? 用法為oldboy$ 表示匹配以oldboy單詞結(jié)尾的行
組合符^$? 用法為^$oldboy 表示空行?以^開(kāi)頭的行狞山,以$結(jié)尾的行
點(diǎn)號(hào). ? 表示匹配任意一個(gè)有且只有一個(gè)字符(但不能匹配空行)
轉(zhuǎn)義符\? 讓特殊含義字符脫馬甲顯原形 如 \. 點(diǎn)只表示小數(shù)點(diǎn)
星號(hào) *? 匹配前一個(gè)字符(連續(xù)出現(xiàn))0次或1次以上
.* 組合符? 匹配所有內(nèi)容
^.*組合符 匹配以任意多個(gè)字符開(kāi)頭的內(nèi)容
.*$組合符 以任意多個(gè)字符結(jié)尾的內(nèi)容
[abc]或[a-z] ? ?? 匹配[]集合內(nèi)的任意一個(gè)字符a或b或c
[^abc] ? ? ? ? ? ? ?? 匹配不包含^后的任意字符a或b或c,^表示對(duì)[abc]取反
? ? ? ? ? 2、擴(kuò)展正則表達(dá)式集合
+ ? ? ? ? ? ? ?? 匹配前一個(gè)字符1次或1次以上
[:/]+ ? ? ? ? ?? 匹配括號(hào)內(nèi)的:或/字符1次或1次以上
绩蜻? ? ? ? ? ? ? ? 匹配前一個(gè)字符0次或1次
| ? ? ? ? ? ? ? ? 表示或者铣墨,即同時(shí)過(guò)濾多個(gè)字符串
() ? ? ? ? ? ? ? 分組過(guò)濾被包括起來(lái)的東西表示一個(gè)整體室埋,另()的內(nèi)容 可以被后面的\n引用办绝,n為數(shù)字,表示引用第幾個(gè)()的內(nèi)容
/n ? ? ? ? ? ? ? 引用前面()里面的內(nèi)容姚淆;如(aa)\1,匹配aaaa
a{n,m} ? ? ?? 匹配前面一個(gè)字符最少n次孕蝉,最多m次
a{n,} ? ? ? ? ??匹配前面一個(gè)字符最少n次
a{n} ? ? ? ? ?? 匹配前面一個(gè)字符正好n次
a{,m} ? ? ? ?? 匹配前面一個(gè)字符最多m次
支持?jǐn)U展正則的3種方法:
grep命令加-E參數(shù)即可支持?jǐn)U展正則
grep命令不加參數(shù)也可以使用擴(kuò)展正則表達(dá)式的特殊字符,但有個(gè)條件腌逢,就是需要在使用的每個(gè)特殊字符前面加反斜\
egrep命令直接支持?jǐn)U展正則