grep與Regex

來源:互聯網
上載者:User

標籤:re   grep   egrep   fgrep   

    Regex(Basic Regular Expression簡寫為 REGEX、REGEXP 或 BRE),是對字串操作的一種邏輯公式,就是用事先定義好的特定字元及特定字元的組合,組成一個“規則字串”,這種“規則字串”稱為模式,用來對文本字串的一種過濾邏輯,通常被用來檢索、替換符合某個模式的文本。POSIX將Regex分為基本Regex和擴充Regex(Extended Regular Expression簡寫為ERE),大部分Linux應用和工具僅支援基本Regex。

    grep(Global Regular Expression Print):根據模式去搜尋文本並將符合模式的文本顯示出來;grep是一個強大的文本搜尋工具,它能使用Regex搜尋文本,並把匹配到的行列印出來;grep執行時會返回一個狀態值來說明搜尋的狀態,如果模式搜尋成功,則返回0;不成功,則返回1;如果檢索的檔案不存在,則返回2。

        模式(pattern):由文本字元和Regex的元字元組合而成的匹配條件;

        元字元:在Regex中起特殊意義的專用字元;

    格式:

        grep    [options]    pattern    [arguments]

            常用選項:

                -E:使用擴充Regex

                -F:使用快速grep進行匹配,不支援Regex

                --colour | --color:匹配到的關鍵字高亮(非常實用)

                    可以使用alias grep=‘grep --colour‘定義別名,省去每次輸入之煩

                -v:反向選擇,顯示不匹配的行

                -i:忽略大小寫

                -o:只顯示匹配到的字串

                -c:顯示匹配次數

                -w:匹配整個單詞

                -x:匹配整行

                -f:從文本中獲得匹配模式

                -n:顯示匹配到的行號

                -A #:after的意思,顯示匹配字串後#行的內容

                -B #:before的意思,顯示匹配字串前#行的內容

                -C #:顯示匹配字串前後#行的內容

    基本Regex元字元:

        \:逸出字元

        .:匹配任意單個字元

        *:匹配其前面的字元任意次

        ?:匹配其前面的字元一次或0次

        \{m,n\}:匹配其前面的字元最少m次,最多n次

        ^:錨定行首,其後面的字元必須出現在行首

        $:錨定行尾,其前面的字元必須出現的行尾

        ^$:空行的表示方法

        []:匹配指定範圍內的單個字元

            [:space:]:空白字元

            [:punct:]:標點符號

            [:digit:] | [0-9]:數字

            [:lower:] | [a-z]:小寫字母

            [:upper:] | [A-Z]:大寫字母

            [:alpha:] | [a-zA-Z]:大小寫字母

            [:alnum:] | [0-9a-zA-Z]:數字和大小寫字母

            可以使用man 7 glob查看此列表

        |:或運算,其左右運算元均可為一個子運算式

        [^]:匹配指定範圍外的單個字元

        \< | \b:錨定詞首,其後面的字元作為單詞的首部

        \> | \b:錨定詞尾,其前面的字元作為單詞的尾部

        \(\):表示一個字元集合,後向引用

            \1:引用第一個左括弧與之對應的右括弧的所有內容;\2,\3......

    搜尋字串是Regex,為了避免shell的元字元對Regex的影響,使用(‘‘)單引號括起來,盡量避免使用("")雙引號,或者不適用引號。

    擴充Regex元字元:

        擴充Regex在基本Regex的基礎上進行了擴充,在擴充Regex中不需要使用反斜線\來轉義特殊符號;

        . * ?......等意義和基本Regex相同

        +:匹配其前面的字元至少一次

        {m,n}:匹配其前的字元最少m次,最多n次

        ():表示一個字元集合,後向引用

    egrep(Extended):使用擴充Regex模式來匹配文本,已經使用‘grep -E’替代,用法同grep

    fgrep(Fast):與grep和egrep不同,因為搜尋字串而不是搜尋匹配運算式的模式,所以速度快,但功能差;已經使用‘grep -F’替代,用法同grep

本文出自 “杆兒男” 部落格,請務必保留此出處http://wtime.blog.51cto.com/8829658/1537135

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.