Linux管線命令egrep還有延伸正則表達式?

承接上一節

本節主要介紹grep下延伸正則表達式

延伸正則表達式

一般使用者只需要瞭解基礎的正則表達式就夠用了,但是呢,某些時候想要簡化指令或者那啥(zhuang bi)的話瞭解延伸正則表達式也是挺好的,延伸表達式適用範圍更加廣泛.廢話少說,舉例子才是王道.

模板練習文件還是上一節的express.txt

Linux管線命令egrep還有延伸正則表達式?

express.txt模板練習文件

示例一:如果我們要去除空白行和行首是#的行列,按照上一節的做法是:

grep -v '^$' express.txt | grep -v '^#'

其實使用延伸表達式可以更簡介

egrep -v '^$|^#' express.txt

Linux管線命令egrep還有延伸正則表達式?

grep -v '^$' express.txt | grep -v '^#'

延伸表達式可以通過群組功能"|"來進行一次查詢,"|"就是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" 字串的意思


分享到:


相關文章: