grep、egrep及相應的正則表達式和用法

     grep系:grep,egrep,fgrep,文本搜索工具,基於PATTERN對於給定的文本進行模糊搜索,grep系默認工作於貪婪模式下。

 grep:

  grep [OPTIONS] PATTERN [FILE...]

 

  PATTERN:過濾條件,是由正則表達式元字符以及沒有特殊含義的文本字符組成。

  正則表達式元字符:

  會被正則表達式引擎解釋爲特殊含義。 pcre——perl語言的正則表達式引擎。

   基本的正則表達式:BRE

   擴展的正則表達式:ERE

   grep默認僅支持基本正則表達式

   egrep默認僅支持擴展正則表達式

   fgrep默認不開啓正則表達式引擎

 

  文本字符:

  只具備字符片面含義的那些字符

 

  常用選項:

 

   -i, --ignore-case  忽略文本字符的大小寫

   -v, --invert-match  反向匹配,最終顯示的結果是PATTREN不能匹配的行

   -c, --count  統計匹配PATTERN的所有的行數

   -o, --only-matching  關閉貪婪模式,僅顯示PATTERN能匹配的內容

   -q, --quiet, --silent  不輸出任何匹配結果

   --color[=WHEN], --colour[=WHEN]    將匹配的PATTREN的內容以特殊顏色顯示

   -E, --extended-regexp  擴展的正則表達式 grep-E 相當於egrep

   -F, --fixed-strings, --fixed-regexp  相當於fgrep

   -G, --basic-regexp  基本的正則表達式,egrep -G相當於grep

   -P, --perl-regexp  使用PCRE引擎

   -A NUM, --after-context=NUM  在顯示匹配PATTERN的行同時顯示其後面的NUM行

   -B NUM, --before-context=NUM

 

   PATTERN;

    正則表達式元字符:

 

      基本正則表達式元字符:

      GLOBBING-------簡化版的正則表達式: []  ?  *

 

       字符匹配:

        .:匹配任意單個字符

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

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

        下列所有的字符集都可以放置於[]之中匹配單個字符

        [:lower:]

        [:upper:]

        [:alpha:]

        [:digit:]

        [:space:]  空格

        [:alnum:]

        [:punct:]

        [:blank:]

        [:xdigit:]:所有的十六進制數字

        a-z:所有的小寫字母

        A-Z:所有的大寫字母

        0-9:所有的十進制數字

 

 

       次數匹配: 該類字符之前的那個字符可以出現的次數

         *:其前面的字符可以出現任意次(0次,1次或多次)

         \?:其前面的字符可有可無(0次或一次)

         \+:其前面的字符至少出現一次(1次或多次)

         \{m\}:其前面的字符必須出現m次

         \{m,n\}:至少出現m次,至多出現n次  (m<n)

         \{,n\}:其前面字符至多出現n次,至少出現0次

         \{m,\}:其前面字符至少出現m次

 

        在正則表達式中,表示任意長度任意字符的方式:.*

 

 

        位置錨定字符:

           行錨定:

            行首錨定:^

            行尾錨定:$

           字錨定:

             字首錨定:\<或\b

             字尾錨定:\>或\b

             \b:舊版本中的錨定方法,建議不使用

 

             對於正則表達式的引擎來說,字是由特殊字符組成的連續字符串

 

 

 

           分組與引用字符:

            \(PATTERN\):將此PATTERN所匹配到的所有字符當做一個不可分割的整體來處理。

 

             在正則表達式引擎中,有一系列內置變量,這些變量會保存所有分組內的字符信息,用於反向引用,這些變量依次是:\1,\2,\3...

             ..

 

           

           或:

 

             \|

             注意:\|將其左右兩邊的字符串當整體對待。

 

             A\|american:A或american

             請找出ifconfig命令中數值在100-255之間的整數:

               第一位:1     2

               第二位:0-9   0-4    5

               第三位:0-9   0-9    0-5

               ifconfig | grep '\<\(1[0-9][0-9]\|2[0-4][0-9]\|25[0-5]\)\>'

 

 

 

              grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]

 

                默認情況下,grep命令後面只允許有一個PATTERN;

                如果想要在依次grep搜索中寫多個PATTERN,則需要-e選項,每個-e選項只能使用一個PATTERN作爲參數;

                將所需要的PATTERN寫入到一個文件中,保證每行只有一個PATTERN,我們就可以使用-f的方式實現多PATTERN的匹配;

 

 

       egrep:     下列用法和grep一樣

 

 

       擴展的正則表達式元字符:

         字符匹配:

           .

           []

           [^]

          次數匹配:

          *

          ?

          +

          {m}

          {m,n}

          {m,}

          {0,n}

 

          位置錨定:

          ^

          $

          \<,\b

          \>,\b

 

          分組和引用:

          ()

          \1,\2,\3...

 

          或:

          |


 

      

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