grep 正則表達式

grep (Global Regular Expression Print)是一種文本搜索工具,能使用正則表達式搜索文本,並把匹配的行打印出來,egrep (Extended grep)擴展正則表達式,

語法

grep [options] PATTERN  [FILE…]

            PATTERN(模式):  文本字符和正則表達式的起名字符組合而成匹配條件

options(參數)

           -i     --ignore-case  忽略字母大小寫

           --color    高亮顯示匹配的字符

           -v            顯示沒有被模式匹配到的行

           -o            只顯示被模式匹配到的字符串

           -A #        顯示搜索到的行及後面#行的內容

           -B #         ………………………..前面#行的內容

           -C #        ………………………….前後各#行的內容

正則表達式:REGular EXPression, REGEXP 正則表達式是一種表示方式,讓你可以查找匹配特定準則的文本。

grep 引號的意義

‘ ’:   強引用,所見即所得:即將單引號內的內容原樣輸出,或者描述爲單引號裏面看到的是什麼就會輸出什麼。單引號''是全引用,被單引號括起的內容不管是常量還是變量者不會發生替換。grep ‘$a’file  表示的時查找 ‘$a’字符

“ ”:   把雙引號內的內容輸出出來;如果內容中有命令、變量等,會先把變量、命令解析出結果,然後在輸出最終內容來。雙引號""是部分引用,被雙引號括起的內容常量還是常量,變量則會發生替換,替換成變量內容。grep “$a”file  表示引用變量a,查找變量a的值

  不加引號 : 不會將含有空格的字符串視爲一個整體輸出,如果內容中有命令、變量等,會先把變量、命令解析出結果,然後在輸出最終內容來,如果字符串中帶有空格等特殊字符,則不能完整的輸出,需要改加雙引號,一般連續的字符串,數字,路徑等可以用

 

正則表達式由兩個基本組成部隊建立:一般字符和特殊字符,一般字符指沒有特殊意義的字符,特殊字符常稱爲元字符。

元字符:

     \  :   轉義符,如果元字符前面加有‘\’ 就表示爲其本身的意義,不再有元字符的特殊意義

      .  :  匹配任意單個字符

     [ ] :  匹配指定範圍內的任意單個字符

     [^]:  匹配指定範圍外的任意單個字符

     字符集合

     [:digit:]    表示數字集合0-9  [[:digit:]]與[0-9]的意義相同

     [:lower:]   小寫字母集合

     [:upper:]  大寫字母集合

     [:punct:]   標點符號字符

     [:space:]   空白格符[:blank:]空格(space)與定位(tab)字符

     [:alpha:]    字母字符包括大小寫

     [:alnum:]   字母數字字符(包括大小寫)

匹配次數字符

     *    :   匹配前面字符任意次,包括0

     .*   :   表示任意長度任意字符

     \?   :   匹配前面的字符一次或零次

     \{m,n\} :   匹配其前面字符至少m次,至多n次,如果最多次數不限,n可以省略不寫,如果表示至少爲0次,m可以寫爲0,但不能不寫。\{1,\}  \{0,3\}

     注意: ‘\’ 在正則表達式中也代表有轉義的意思,與bash本身的意義區別。如?在bash中表示任意一個字符,這裏\?表示的是次數,{} 在bash中表示命令展開,在正則表示式中\{m,n\}表示次數,但在擴展正則表達式中可以不用’\‘來區分。

 

位置錨定:

    ^   :  錨定行首, 此字符後面的任意內容必須出現在行首

    $    :   …   行尾,  ………………………………………………  行尾

    ^$ :  空白行

    \< 或 \b   : 錨定詞首,其後面的任意字符必須做爲單詞的首部出現

    \> 或 \b   :  …….詞尾, ………………………………………………..尾部出現

    \<word\>  :  匹配整個單詞   \<    \> 

 

分組:

\(\)   :  \(alnum\)*   表示把  (alnum) 做爲一個整體,匹配任意次

後向引用

\1     : 引用第一個左括號以及與之對應的右括號所包括的所有內容

\2     :         第二個

\n     :         第n 個

即把前面分組的內容後面再引用

 

grep 命令就是使用字符或正則表達式規則來匹配文本的命令

egrep 擴展正則表達式,也grep –e  命令效果是一樣的

[]

[^] 與正則表達式的用法一樣

次數匹配

*   : 和正則表達式作用一樣

? :  不用加 ’\’

+    :   匹配其前面的字符至少一次,類似正則表達式 \{1,\}

{m,n}  : 不使用斜線

位置錨定符與正則表達式一樣

分組:

( )   : 與正則表達式\( \) 相比,不需要斜線

\1  \2  \3    後向引用

或者符

|  :or    或意義    C|cat  表達的是C 或者  cat   , (C|c)at  表示  Cat|cat  的意義

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章