grep命令詳解與正則表達式


grep命令主要是做什么的呢 ?下面我們就來研究下。

grep命令簡單來說就是“過濾”。就是把想看的數據通過grep過濾出來,把不想看的通過grep過濾掉。

它是一種強大的文本搜索工具,它能使用正則表達式搜索文本,並把匹配的行打印出來,Unix的grep家族包括(egrep,fgrep,grep)。egrep和fgrep的命令跟grep有所不同,egrep是grep的擴展,支持更多的re元字符,fgrep表示就是fixed grep或fast grep,它們把所有的字母都看作單詞,也就是說正則表達式中的元字符表示自身的意思,不再特殊,linux使用的GNU版本的grep本身就強大,可以通過-G,-E,-F 命令行來選項egrep和fgrep的功能。

選項:

          -A   #       --after                         表示后#行 

        -B   #     --before                      表示前#行

   -C  #   --context                     表示“前后”各#行      

        -D          --devices                       設置對設備,FIFO,管道的操作,讀取,跳過

         -E          --extended-regexp       擴展正則表達式egrep

         -F         --fixed-strings               一個換行符分隔的字符串的集合fgrep

   -G         --basic-regexp              基本正則

         -H         --with-filename            當搜索多個文件,顯示匹配的文件名前綴

         -I                                              不匹配二進制的東西 

         -L        --files-without--math     匹配多個文件時,顯示不匹配的文件名

   -P         -----perl-regexp            調用的perl正則

      -R/-r    --recursive                    遞歸調用

         -V        --version                      顯示版本信息

         -U        --binary                       使用標志高亮匹配字符串

小寫選項:

         -a         --text                           不要忽略二進制數據

    -b       --byte-offset                  打印匹配行前面答應該行所在的塊行碼

    -c        --count                         顯示匹配的行數

    -d          --directories               目錄操作,讀取,遞歸跳過

         -e         --regexp                      指定字符串作為查找文件內容范本樣式

         -f           ---file                           從文件中獲得匹配模式

         -h          --no--filename            當搜索多個文件,不顯示文件名的前綴

         -i            --ignore-case             不區分大小寫

         -l            --files-with-matches   匹配多個文件時,顯示匹配的文件名

   -n           --line-number             顯示的內容加上行號

        -q          --quiet,--silent          不顯示任何東西

   -s         --no-messages           不顯示錯誤信息

   -v          --invert-match            顯示不匹配的行

        -w         --word-regexp            匹配整個單詞

        -x          --line-regexp              匹配整行

        -y                                            此選項跟-i選項相同

        -o         --only-matching          只顯示一行中匹配PATTERN的數據

    -m         --max-count                匹配的最大數     

 

*注:單詞由字母,數字,下划線組成

正則表達式:^   表示以^grep開頭的行

           $     表示行尾錨定,用於模式的最右側  

             .      表示任意單個字符  

       *       匹配前面的字符任意次

      .*    任意長度字符

        []     匹配指定的范圍內的內容

             [^]       匹配不在范圍的內容

        \(..\)      標記匹配字符,如\(love\) ,love被標記為1

       \<        錨定單詞的開始,即詞首錨定,用於單詞模式的開始

        \>         錨定單詞的詞尾,即詞尾錨定,用於單詞模式的結束,鎖定單詞的結束

       \{n\}  匹配前面的字符n次

    \{,n\}  匹配前面的字符至多n次, <=n

    \{m,n\}  匹配前面的字符至少m次,最多n次

    \{n,\}  匹配前面的字符至少n次, 最多無限次

    \+            匹配前面的字符出現最少1次, 即:肯定有且>=1次

    \?    匹配前面的字符出現0次或1次,即:可有可無

    ^$         空行

    ^[[:space:]]*$         空白行

    ^PATTERN$         用於模式匹配整行

    \<PATTERN\>      匹配整個單詞

    \|                           或者

   ()                         將多個字符捆綁在一起,當作一個整體處理

   后向引用:\(string\string2\)\)

          1\:string\(string2\)

          2\:string2

    

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM