天天看點

Bash Shell-正規表達式與模式比對

最近用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的行

繼續閱讀