承接上一節
本節主要介紹grep下延伸正則表達式
延伸正則表達式
一般使用者只需要瞭解基礎的正則表達式就夠用了,但是呢,某些時候想要簡化指令或者那啥(zhuang bi)的話瞭解延伸正則表達式也是挺好的,延伸表達式適用範圍更加廣泛.廢話少說,舉例子才是王道.
模板練習文件還是上一節的express.txt
示例一:如果我們要去除空白行和行首是#的行列,按照上一節的做法是:
grep -v '^$' express.txt | grep -v '^#'
其實使用延伸表達式可以更簡介
egrep -v '^$|^#' express.txt
延伸表達式可以通過群組功能"|"來進行一次查詢,"|"就是or的意思,這樣看來是不是延伸表達式簡潔性更強呢,需要注意的是,grep默認僅支持基礎正則表達式,egrep支持延伸正則表達式,這一點很多人容易混淆,其實egrep就是grep -E,因為直接去分指令比較好記憶,所以才區分grep,egrep.
通過上聯的例子我們可以看到,所謂延伸正則表達式就是多了幾個特殊符號而已.
+ 意義:重複“一個或一個以上”的前一個 RE 字符 範例:搜尋 (god) (good) (goood)... 等等的字串。 那個 o+ 代表“一個以上的 o ”
? 意義:“零個或一個”的前一個 RE 字符 範例:搜尋 (gd) (god) 這兩個字串。 那個 o? 代表“空的或 1 個 o ”
| 意義:用或( or )的方式找出數個字串 範例:搜尋 gd 或 good 這兩個字串,注意,是“或”!
()意義:找出“群組”字串 範例:搜尋 (glad) 或 (good) 這兩個字串,因為 g 與 d 是重複的,所以, 我就可以將 la 與 oo 列於 ( ) 當中,並以 | 來分隔開來,就可以啦! > egrep -n 'g(la|oo)d' express.txt
()+意義:多個重複群組的判別 範例:將“AqwerqwerqwerC”用 echo 叫出,然後再使用如下的方法搜尋一下! > echo 'AqwerqwerqwerC' | egrep 'A(qwer)+C' 意思是說,我要找開頭是 A 結尾是 C ,中間有一個以上的 "qwer" 字串的意思
閱讀更多 Python小飛豬 的文章