最近用Bash寫了不少程式,個人認為bash的模式比對比較讓人頭疼,特摘錄相關說明如下,供朋友們查找。
功能 | 示例 | 比對對象 |
行首定位符 | /^man/ | 比對所有以man開頭的行 |
行尾定位符 | /man$/ | 比對所有以man結尾的行 |
比對單個字元 | /m..n/ | 比對包含一個m,後跟兩個字元,再跟一個n的行 |
比對0個或多個重複的位于星号前的字元 | /*man/ | 比對包含跟在0個或者多個空格的模式的man的行 |
比對一組字元中任一個 | /[Mm]an/ | 比對包含Man或man的行 |
比對指定範圍内的一個字元 | /[A-Z]an/ | 比對後面跟着an的一個A至Z之間的字元 |
比對不在指定組内的字元 | /[^A-Z]/ | 比對不在範圍A至Z之間的任意一個字元 |
用來轉義元字元 | /man\./ | 比對包含man,後面跟一個點(如果不轉義的話則是比對一個任意字元) |
詞首定位符 | /\<man/ | 比對包含以man開頭的詞的行(vi和grep支援) |
詞首定位符 | /man\>/ | 比對包含以man結尾的詞的行(vi和grep支援) |
比對稍後将要使用的字元的标簽 | s/\(man\) acle/\1age/g | 最多可以使用9個标簽,模式中最左邊的标簽是第一個。例如,模式man被儲存為标簽1,用\1表示。左邊這個例子中,查找manacle,把它替換成manage(sed、vi和grep支援) |
字元x的重複出現:m次、至少m次、至少m次且不超過n次 | n\{3,5\} | 比對包含3~5個連續的字母n的行 |