1于颖、正則表達(dá)式說明
正則表達(dá)式和通配符的區(qū)別
- 正則表達(dá)式用來在文件中匹配符合條件的字符串呆贿。
- 通配符用來匹配符合條件的文件名。
在Shell中森渐,使用在文件當(dāng)中搜索字符串的命令做入,如grep
,awk
同衣,sed
等命令(文本操作三劍客)竟块,可以支持正則表達(dá)式。
而在系統(tǒng)當(dāng)中搜索文件的命令耐齐,如ls
浪秘,find
,cp
這些命令不支持正則表達(dá)式埠况,所以只能使用通配符來進(jìn)行匹配了耸携。
- 在Shell中只要是匹配字符串,都適用于正則匹配辕翰。
- 正則表達(dá)式匹配的是以一行為單位進(jìn)行包含匹配的夺衍,匹配上就顯示輸出該行文本,否則不顯示喜命。
2沟沙、基礎(chǔ)正則表達(dá)式
元字符 | 作用 |
---|---|
* |
匹配前一個(gè)字符匹配0次或任意多次。 |
. |
匹配除了換行符外任意一個(gè)字符壁榕。 |
^ |
匹配行首矛紫。例如:^hello 會(huì)匹配以hello 開頭的行。 |
$ |
匹配行尾护桦。例如:hello$ 會(huì)匹配以hello 結(jié)尾的行含衔。 |
[] |
匹配中括號(hào)中指定的任意一個(gè)字符,只匹配一個(gè)字符。 例如: [aoeiu] 匹配意一個(gè)元音字母贪染,[0-9] 匹配任意一位數(shù)字缓呛,[a-z][0-9] 匹配小寫字和一位數(shù)字構(gòu)成的兩位字符。 |
[^] |
匹配除中括號(hào)的字符以外的任意一個(gè)字符杭隙。 例如: [^0-9] 匹配任意一位非數(shù)字字符哟绊,[^a-z] 表示任意一位非小寫字母。 |
\ |
轉(zhuǎn)義符痰憎。用于取消將特殊符號(hào)的含義取消票髓。 |
\{n\} |
表示其前面的字符恰好出現(xiàn)n次。 例如: [0-9]\{4\} 匹配4位數(shù)字铣耘,[1][3-8][0-9]\{9\} 匹配手機(jī)號(hào)碼洽沟。 |
\{n,\} |
表示其前面的字符出現(xiàn)不小于n次。 例如: [0-9]\{2,\} 表示兩位及以上的數(shù)字蜗细。 |
\{n,m\} |
表示其前面的字符至少出現(xiàn)n次裆操,最多出現(xiàn)m次。 例如: [a-z]\{6,8\} 匹配6到8位的小寫字母炉媒。 |
注意:Shell語言不是一個(gè)標(biāo)準(zhǔn)的完整語言踪区,在其他語言中的正則表達(dá)式中,是不分基礎(chǔ)正則和擴(kuò)展正則的吊骤。而Shell認(rèn)為你不需要拿正則寫太過復(fù)雜的字符串篩選格式缎岗,所以Shell建議把正則表達(dá)式分成基礎(chǔ)正則和擴(kuò)展正則兩種。