目錄
一、理論
1.通配符
2.正則表達式
二、實驗
1.通配符
2.正則表達式
一、理論
1.通配符
(1)概念
通配符只用于匹配文件名、目錄名等,不能用于匹配文件內容,而且是已存在的文件或者目錄。
各個版本的shell都有通配符,這些通配符是一些特殊的字符,
用戶可以在命令行的參數(shù)中使用這些字符,進行文件名或者路徑名的匹配。
shell將把與命令行中指定的匹配規(guī)則符合的所有文件名或者路徑名作為命令的參數(shù),
然后執(zhí)行這個命令。
(2)通配符
表1 常用通配符
通配符 | 功能 |
* | 通配符匹配任意一個或多個字符 |
? | 通配符匹配一個任意字符 |
[] | [list]匹配list中任意單個字符 |
2.正則表達式
(1)概念
正則表達式英文為REGEXP(Regular Expressions),它是由一類特殊字符及文本字符所編寫的模式,其中有些字符(元字符)不表示字符字面意義,而表示控制或通配的功能,
類似于增強版的通配符功能,但與通配符不同,通配符功能是用來處理文件名,而正則表達式是處理文本內容中字符。
注意事項:使用正則表達式必須加引號。
(2)元字符
表2 常用元字符
元字符 | 功能 |
. | 匹配任意單個字符,可以是一個漢字 |
() | 使用轉義符,只表示\(\) |
[] | ?匹配指定范圍內的任意單個字符,示例:[dn] ?[0-9] ?[] ?[a-zA-Z] ? [:alpha:] |
[^]? | 匹配指定范圍外的任意單個字符,示例:[^dn] [^a.z] |
[:alnum:] | 字母和數(shù)字 [0-9] [a-z] [0-9] [a-z] |
[:alpha:] | 代表任何英文大小寫字符,亦即 [A-Z], [a-z] |
[:lower:]? | 小寫字母,示例:[[:lower:]],相當于[a-z] |
[:upper:]? | 大寫字母 [A-Z] |
[[:blank:]] | 空白字符(空格和制表符) |
[:space:] | 包括空格、制表符(水平和垂直)、換行符、回車符等各種類型的空白,比[:blank:]包含的范圍廣 |
[:cntrl:] | 不可打印的控制字符(退格、刪除、警鈴...) |
[:digit:] | 十進制數(shù)字 |
[:xdigit:] | 十六進制數(shù)字 |
[:graph:] | 可打印的非空白字符 |
[:print:] | [:print:] 可打印字符 |
[:punct:] | 標點符號 |
\w | 匹配單詞構成部分,等價于[_[:alnum:]] |
\W | 匹配非單詞構成部分,等價于[^_[:alnum:]] |
\S? | 匹配任何非空白字符。等價于 [^ \f\n\r\t\v]。 |
\s | 匹配任何空白字符,包括空格、制表符、換頁符等等。等價于 [ \f\n\r\t\v]。 |
(2)表示次數(shù)
表3 表示次數(shù)
次數(shù)字符 | 功能 |
* | 匹配前面的字符任意次,包括0次,貪婪模式:盡可能長的匹配 |
.* | 任意長度的任意字符,不包括0次,也就是匹配所有 |
\? | 匹配其前面的字符出現(xiàn)0次或1次,即:可有可無 |
\+ | 匹配其前面的字符出現(xiàn)最少1次,即:肯定有且 >=1 次 |
\{n\}? | 匹配前面的字符=n次 |
\{m,n\} | 匹配前面的字符至少m次,至多n次 |
\{,n\} | 匹配前面的字符至多n次,<=n? |
\{n,\}? | 匹配前面的字符至少n次 |
(3)位置錨定
表4 位置錨定
位置字符 | 功能 |
^ | 表示以什么字符開頭的行。 |
$ | 表示以什么字符為結尾的行。 |
^PATTERN$ | 表示用于模式匹配整行 (單獨一行 ?只有PATTERN字符)。 |
^$ | 表示空行。 |
\< 或 \b? | 詞首錨定,用于單詞模式的左側(連續(xù)的數(shù)字,字母,下劃線都算單詞內部)。 |
\> 或 \b? | 詞尾錨定,用于單詞模式的右側。 |
\<PATTERN\>?? | \<PATTERN\> ?? |
(4)分組
()將多個字符捆綁在一起當做一個整體處理
(5)擴展正則表達式
? ? ? ① 使用方法
grep? -E選項加正則表達式內容,與正常正則表達式區(qū)別在于不用在匹配時添加 \?
? ? ? ② 表示次數(shù)
表5 擴展正則表達式表示次數(shù)
表示次數(shù) | 功能 |
*? | 匹配前面字符任意次 |
? | 0或1次 |
+? | 1次或多次 |
{n} | 匹配n次 |
{m,n} | 至少m,至多n次 |
{,n} | 匹配前面的字符至多n次,<=n,n可以為0 |
{n,} | 匹配前面的字符至少n次,<=n,n可以為0 |
? ? ? ?③ 表示分組
? ? ? ? ? () 分組
二、實驗
1.通配符
(1)匹配任意一個或多個字符? *
(2)匹配一個任意字符? ?
(3)匹配列表中任意單個字符 []
2.正則表達式
(1)在正則表達式中表示任意單個字符? ?.
?
(2)在正則表達式中表示匹配[ ]中任意一個字符? ?[ ]
(3)在正則表達式中表示匹配[?]中外的任意單個字符? ?[^]
?
?(4) 元字符:
代表任何英文大小寫字符 [:alpha:]?
字母和數(shù)字 [:alnum:]?
小寫字母 [:lower:]?
大寫字母 [:upper:]
?(5)表示匹配前面字符任意次,包括0次? *? ? ?
? ? ? ? ?表示匹配前面字符任意次,不包括0次? .*
?(6)表示匹配前面的字符1次或0次,即可有可無? \?
?(7)表示匹配前面的字符最少1次? \+
?(8)表示匹配前面的字符n次?? \{n\}
?(9)表示匹配前面的字符最少m次最多n次? \{m,n\}
? ?(10)? 表示匹配前面的字符最少m次?? \{m,\}
? ?(11)?表示匹配前面的字符最多n次?? \{,n\}文章來源:http://www.zghlxwxcb.cn/news/detail-468924.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-468924.html
到了這里,關于Shell腳本攻略:通配符、正則表達式的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!