一 正則表達(dá)式與通配符
1 正則表達(dá)式是用在文件中匹配符合條件的字符串,正則是包含匹配,grep,awk,sed等命令可以支持正則表達(dá)式
2 通配符是用來(lái)匹配符合條件的文件名,通配符是完全匹配,ls,find,cp這些命令不支持正則表達(dá)式,所以只能用Shell自己的通配符來(lái)進(jìn)行匹配了。
二 基礎(chǔ)正則表達(dá)式
這里引用兄弟連的測(cè)試文本
1 * 前一個(gè)字符匹配0次或任意多次
grep “a*” test_rule.txt
匹配所有內(nèi)容,包括空白行(由于*可以匹配0次)
![](/d/20211017/aeded300028a881baa35022e7e76b19f.gif)
grep “aa*” test_rule.txt
匹配至少包含有一個(gè)a的行
![](/d/20211017/ffe114ecbb9d58fd695d4bde6fd10773.gif)
grep “aaa*” test_rule.txt
匹配至少包含有兩個(gè)a的行
![](/d/20211017/ac72e38402031b4344761ed2c84c08cf.gif)
2 . 匹配除了換行符之外的任意一個(gè)字符
grep “s..d” test_rule.txt
匹配s和d直接一定要有兩個(gè)字符的行
![](/d/20211017/a95d3555e06cff48b74365051bad5d6d.gif)
grep “s.*d” test_rule.txt
匹配s和d直接任意字符
![](/d/20211017/4f5ec9ed42d434d0d088c62645c29528.gif)
grep “.*” test_rule.txt
匹配所有內(nèi)容
![](/d/20211017/c797d02ea0913e4cd8ea4c9c50cda063.gif)
3 ^匹配行首 $匹配行尾
grep “^M” test_rule.txt
匹配以大寫M開(kāi)頭的行
![](/d/20211017/cfafd65fca6f6dc6aa93eda5fa791a5b.gif)
grep “n$” test_rule.txt
匹配以小寫n結(jié)尾的行
![](/d/20211017/e5286961ea780063b3afd80b84dde4a0.gif)
grep -n “^$” test_rule.txt
匹配空白行
![](/d/20211017/cccc4cef5eb5a21e2bb03b4fbffd391d.gif)
4 [] 匹配括號(hào)中指定的任意一個(gè)字符,只匹配一個(gè)字符
grep “s[ao]id” test_rule.txt
匹配s和i字母之間,要么是a,要么是o的行
![](/d/20211017/7cbe7b3f6300af6e1ce8cbf37f8d81ee.gif)
grep “[0-9]” test_rule.txt
匹配任意一個(gè)數(shù)字
![](/d/20211017/ea78143fc664d223e4c59f7d28615f6e.gif)
grep “^[a-z]” test_rule.txt
匹配用小寫字母開(kāi)頭的行
![](/d/20211017/36d1edb494e425f60ab37340b438c744.gif)
5 [^] 匹配除括號(hào)中以外的任意一個(gè)字符
grep “^[^a-z]” test_rule.txt
匹配不用小寫字母開(kāi)頭的行
![](/d/20211017/09840790c59d0c87e7b9868c55f641cb.gif)
grep “^[^a-zA-Z]” test_rule.txt
匹配不用字符開(kāi)頭的行
![](/d/20211017/e2f09969f844cebbdfa975b8dca7459f.gif)
6 “\” 轉(zhuǎn)義符
grep “.$” test_rule.txt
匹配以.結(jié)尾的行
![](/d/20211017/4ed4c556f08807dba36cde5f19ea1418.gif)
7 {n} 表示其前面的字符恰好出現(xiàn)n次
grep “a{3}” test_rule.txt
匹配字母a連續(xù)出現(xiàn)3次的行
![](/d/20211017/15bc0aa52ff497c5c7f714e50703cfec.gif)
grep “[0-9]{3}” test_rule.txt
匹配包含連續(xù)3個(gè)數(shù)字的行
![](/d/20211017/aa9b92faf6d824834a382e4e5bb22e66.gif)
8 {n,} 表示其前面的字符出現(xiàn)不小于n次
grep “^[0-9]{3,}” test_rule.txt
匹配至少連續(xù)3個(gè)數(shù)字開(kāi)頭的行
![](/d/20211017/f3b77be7c61729b8f9f4bc3c9cdbf6c1.gif)
9 {n,m} 表示其前面的字符出現(xiàn)不小于n次,最多m次
grep “sa{1,3}i” test_rule.txt
匹配s和i之間最少1個(gè)a,最多3個(gè)a
![](/d/20211017/86f2e4bd616887ad0060d9124989d492.gif)
好了,Linux Shell編程-正則表達(dá)式就總結(jié)到這里,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
您可能感興趣的文章:- 詳解Linux--shell腳本之正則表達(dá)式
- linux shell 路徑截取正則表達(dá)式
- shell 正則表達(dá)式詳細(xì)整理
- Shell if中的正則表達(dá)式使用詳解
- Shell正則表達(dá)式學(xué)習(xí)筆記
- Shell腳本中通過(guò)正則表達(dá)式匹配IP地址
- Shell正則表達(dá)式驗(yàn)證IP地址
- Shell正則表達(dá)式之grep、sed、awk實(shí)操筆記