文本處理三劍客之grep

grep系:
grep:Global search Regular Expression and Print out the line.
利用正則表達式進行全局搜索並將匹配到的行顯示出來;

    格式:
        grep [options] PATTERN [FILE...]
        grep [options] [-e PATTERN | -f FILE] [FILE...]

        PATTERN:過濾匹配條件,是由沒有特殊意義的文本字符或者是正則表達式元字符組成;

正則表達式的元字符:會被正則表達式處理引擎解釋爲特殊含義的字符;

pcre:正則表達式處理引擎,prel語言的正在表達式引擎;

正在表達式的元字符:
    基本的正則表達式元字符:BRE
        字符匹配類:
            .:匹配任意單個字符;
            []:匹配任意指定範圍內的單個字符;
            [^]:匹配任意指定範圍以外的單個字符;
                下列所有的字符集都可以放置於[]之中用於匹配字符集範圍內的單個字符:
                    [:lower:]
                    [:upper:]
                    [:alpha:]
                    [:digit:]
                    [:xdigit:]
                    [:alnum:]
                    [:punct:]
                    [:space:]
                    [a-z]:僅表示所有的小寫字母
                    [A-Z]:僅表示所有的大寫字母
                    [0-9]:僅表示所有的十進制數碼

        次數匹配類:該類字符前面的一個字符可以出現的次數;
            *:其前面的字符可以出現任意次,即:0次,1次或多次;
            \?:其前面的字符可有可無,即:0次或1次;
            \+:其前面的字符至少出現一次;
            \{m,n\}:其前面的字符至少出現m次,最多不超過n次;
            \{m\}:其前面的字符必須出現m次;
            \{m,\}:其前面的字符至少出現m次;
            \{,n\}:其前面的字符出現至少出現0次,最多不超n次;

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

        位置錨定字符:
            行錨定:
                行首錨定:^
                行尾錨定:$
            字錨定:
                字首錨定:\<或\b
                字尾錨定:\>或\b

        分組與前向引用字符:
            \(\):將小括號中包含的內容作爲一個不可分割的整體來處理;
            \1, \2, \3,...:前向引用
                正則表達式處理引擎的內置變量,\1表示前面所出現的第一組小括號中括選的內容;\2表示前面所出現的第二組小括號中括選的內容;...

                \(string1\(string2\)\): \1表示string1,\2表示string2;
                \(string1\).*\(string2\):\1表示string1,\2表示string2;

        或者:
            \|:將其左右的字符或字符串當做整體對待;
            "C\|cat"  C  cat

    擴展的正則表達式元字符:ERE
        字符匹配類:
            .:匹配任意單個字符;
            []:匹配任意指定範圍內的單個字符;
            [^]:匹配任意指定範圍以外的單個字符;
                下列所有的字符集都可以放置於[]之中用於匹配字符集範圍內的單個字符:
                    [:lower:]
                    [:upper:]
                    [:alpha:]
                    [:digit:]
                    [:xdigit:]
                    [:alnum:]
                    [:punct:]
                    [:space:]
                    [a-z]:僅表示所有的小寫字母
                    [A-Z]:僅表示所有的大寫字母
                    [0-9]:僅表示所有的十進制數碼

        次數匹配類:該類字符前面的一個字符可以出現的次數;
            *:其前面的字符可以出現任意次,即:0次,1次或多次;
            ?:其前面的字符可有可無,即:0次或1次;
            +:其前面的字符至少出現一次;
            {m,n}:其前面的字符至少出現m次,最多不超過n次;
            {m}:其前面的字符必須出現m次;
            {m,}:其前面的字符至少出現m次;
            {,n}:其前面的字符出現至少出現0次,最多不超n次;

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

        位置錨定字符:
            行錨定:
                行首錨定:^
                行尾錨定:$
            字錨定:
                字首錨定:\<或\b
                字尾錨定:\>或\b

        分組與前向引用字符:
            ():將小括號中包含的內容作爲一個不可分割的整體來處理;
            \1, \2, \3,...:前向引用
                正則表達式處理引擎的內置變量,\1表示前面所出現的第一組小括號中括選的內容;\2表示前面所出現的第二組小括號中括選的內容;...

                (string1(string2)): \1表示string1,\2表示string2;
                (string1).*(string2):\1表示string1,\2表示string2;

        或者:
            |:將其左右的字符或字符串當做整體對待;
            "C|cat"  C  cat

grep系:
    grep:僅支持基本正則表達式元字符
    egrep:可以支持擴展正則表達式元字符
    fgrep:不支持任何形式的正則表達式元字符,將所有的字符都視爲沒有任何特殊意義的普通文本字符;

    常用選項:
        -A num:同時顯示被PATTERN匹配到的行及其後續num行;
        -B num:同時顯示被PATTERN匹配到的行及其前面num行;
        -C num:同時顯示被PATTERN匹配到的行及其前後num行;
        --color[=WHEN]:以高亮顏色顯示被匹配到的內容;
        -c, --count:不輸出被PATTERN匹配的行的內容,而是輸出被PATTERN匹配到的行數;
        -E, --extended-regexp:可以使grep命令支持擴展正則表達式元字符;相當於執行了egrep命令;
        -F, --fixed-strings:相當於fgrep;
        -e PATTERN, --regexp=PATTERN:指定多個PATTERN在一個命令行中生效;
        -f FILE, --file=FILE:從指定的文件中讀取多個PATTERN用於一次搜索;
        -i, --ignore-case:忽略文件中的字符的大小寫;
        -o, --only-matching:僅顯示被PATTERN匹配到的部分,關閉貪婪模式;
        -q, --quiet, --silent:安靜模式;相當於 grep > /dev/null
        -v, --invert-match:顯示沒有被PATTERN匹配到的行;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章