Unix GREP的用法

來源:互聯網
上載者:User
grep(全域Regex版本)允許對文字檔進行模式尋找,grep支援基本Regex,也支援其擴充集。
grep有三種變形:
    grep 標準grep命令
    egrep 擴充grep命令,支援基本及擴充的Regex,但不支援\q模式範圍的應用
    fgrep 快速grep命令,允許尋找字串而不是一個模式,不要誤解fast,其實和grep速度相當

grep的一般格式:
    grep [選項] 基本Regex [檔案]   這裡的基本Regex可為字元
使用雙引號:
    字串參數最好使用雙引號擴起來,一是以防被誤解為shell命令,二是可以用來尋找多個單片語成的字串,在調用變數的時候也要使用雙引號,比如grep "$MYVAR",否則無結果,在調用模式比對是,應使用單引號

grep的選項:
    -c 只輸出匹配行的計數,比如grep -c "test" *.txt,將顯示4,則說明包含test的有4行
    -i 不區分大小寫(只適用於單字元),比如grep -i "Bank" *.c等同於grep -i "bank" *.c
    -h 查詢多檔案時不顯示檔案名稱
    -l 查詢多檔案時只輸出包含匹配字元的檔案名稱
    -n 顯示匹配行及行號,在顯示出內容的每行前面會顯示行數
    -s 不顯示不存在或無匹配文本的錯誤資訊
    -v 顯示不包含匹配文本的所有行,grep -v "test" abc.txt,將顯示不包含"test"的行內容
    -w 以單詞為單位進行匹配
    -E 允許使用擴充模式比對

grep和Regex:
    使用Regex最好使用單引號括起來,避免參數被做為shell命令執行
    ^ 錨定行的開始 如:'^grep'匹配所有以grep開頭的行。
    $ 錨定行的結束 如:'grep$'匹配所有以grep結尾的行。
    . 匹配一個非分行符號的字元 如:'gr.p'匹配gr後接一個任一字元,然後是p。
    * 匹配零個或多個先前字元 如:'*grep'匹配所有一個或多個空格後緊跟grep的行。 .*一起用代表任一字元。
    [] 匹配一個指定範圍內的字元,如'[Gg]rep'匹配Grep和grep。
    [^] 匹配一個不在指定範圍內的字元,如:'[^A-FH-Z]rep'匹配不包含A-F和H-Z字母開頭,緊跟rep的行。
    \(..\)標記匹配字元,如'\(love\)',love被標記為1。
    \< 錨定單詞的開始,如:'\<grep'匹配包含以grep開頭的單詞的行。
    \> 錨定單詞的結束,如'grep\>'匹配包含以grep結尾的單詞的行。
    x\{m\} 重複字元x,m次,如:'0\{5\}'匹配包含5個o的行。
    x\{m,\} 重複字元x,至少m次,如:'o\{5,\}'匹配至少有5個o的行。
    x\{m,n\} 重複字元x,至少m次,不多於n次,如:'o\{5,10\}'匹配5--10個o的行。
    \w 匹配文字和數字字元,也就是[A-Za-z0-9],如:'G\w*p'匹配以G後跟零個或多個文字或數字字元,然後是p。
    \W \w的反置形式,匹配一個或多個非單詞字元,如點號句號等。
    \b 單詞鎖定符,如: '\bgrep\b'只匹配grep。

    模式範圍: grep '48[a-z]' *.txt
    不匹配行首: grep '^[^48]' *.txt 尋找行首不是48的行內容
    設定大小寫: grep '[Ss]ept' *.txt 尋找Sept和sept內容
    匹配任一字元: grep 'K...D' *.txt     grep '[A-Z][A-Z]..C' *.txt
     "與"和"或": grep -E '219|216' *.txt 尋找包含219或者216的行內容
     空行: grep '^$' *.txt
     類名:[[:upper:]] -> [A-Z]         [[:lower:]]   ->    [a-z]
          [[:digit:]] ->   [0-9]       [[:alnum:]]   -> [0-9a-zA-Z]
          [[:space:]] -> 空格或者tab鍵 [[:alpha:]] ->   [a-zA-Z]
        grep '5[[:upper:]]' *.txt 等同於 grep '5[A-Z]' *.txt
     列出所有的目錄   ls -l |grep '^d'     
    列出所有的非目錄   ls -l |grep '^[^d]' 或 ls -l |grep -v '^d'

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.