Linux學習筆記:grep、egrep

文本處理三劍客:git

  grep系:grep 、egrep 、fgrep ,文本搜索工具,基於「PATTERN"對於給定的文本進行模糊搜索,grep系默認工做於貪婪模式下。正則表達式

  sed:Stream EDitor,流編輯器,行編輯器,文本編輯工具;算法

  awk:gawk——GUN awk,文本格式化工具,文本報告生成器,文本處理的編程語言;編程

 

grep系:app

  grep:利用正則表達式進行全局搜索並將匹配的行顯示出來;dom

    grep [OPTIONS] PATTERN [FILE.....]編程語言

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

        正則表達式的元字符:ide

          會被正則表達式引擎解釋爲特殊含義;工具

          pcre——perl語言的正則表達式引擎;最完整的正則表達式引擎


        基本的正則表達式:BRE

        擴展的正則表達式:ERE


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

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

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


        文本字符:

          只具有字符表面含義的那些字符;

      經常使用選項:

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

        -v,--invert-match:反向匹配;最終顯示的結果是PATTERN不能成功匹配的行;

        -c,--count:計數,統計匹配PATTERN的全部的行數;

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

        -q,--quiet,--silent:安靜模式,不輸出任何結果

        --color=auto將結果高亮顯示。。

        -E,至關於egrep

        -F,--fixed-strings,--fixed-regexp:grep -F至關於fgrep

        -G,至關於grep 基本的正則表達式

        -P,--Perl-regexp:使用PCRE引擎。

        -A num:在顯示匹配PATTERN的行的同時顯示其前多少行內容,

        -B num:在顯示匹配PATTERN的行的同時顯示其後多少行內容;

        -C num:在顯示匹配PATTERN的行的同時顯示其先後多少行內容;


    PATTERN:

      正則表達式元字符:

        基本的正則表達式元字符:

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


        字符匹配:

          .:匹配任意單個字符

          下列全部的字符集均可以放置在[]之中用於匹配單個字符。

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

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

          [:lower:]

          [:upper:]

          [:digit:]

          [:alpha:]

          [:space:]

          [:alnum:]

          [:punct:]

          [:blank:]

          [:xdigit:]:全部的十六進制數字;

          a-z:全部的小寫字母

          A-Z:全部的大寫字母

          0-9:標識全部的十進制數字


        次數匹配:該類字符以前的那個字符能夠出現的次數;

          *:其前面的字符能夠出現任意次(0次,1次或屢次);

          \?:其前面的字符無關緊要(0次或1次)。

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

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

          \{m,n\}:其前面的字符至少出現m次最多出現n次。(m<n)

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

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


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


        位置錨定字符:

          行錨定:

            行首錨定:^

            行尾錨定:$

          字錨定:

            字首錨定:\<或者\b

            字尾錨定:\>或者\b

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


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


        分組與引用字符:

          \(PATTERN\):將PATTERN所匹配到的全部字符當作一個不可分割的總體來處理。


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


          pattern1\(pattern2\)pattern3\(pattern4\(pattern5\)\)


          \1:pattern2  第一組小括號中的pattern匹配到的字符;

          \2:pattern4  第二組小括號中的pattern匹配到的字符;

          \3:pattern5


          或:

            \|



            注意:或字符將其左右兩邊的字符當作總體對待;


            A\|americam :A 或 american


        默認狀況下,grep命令後面只容許一個pattern;

        若是想要在一次grep所搜過程當中寫多個pattern,則須要使用-e選項,每一個PATTERN前面加一個-e


        將所須要的PATTERN寫入到一個文件中,保證每行只有一個PATTERN,咱們就可使用-f file方式來實現多PATTERN選項。



  egrep:

    egrep [OPTIONS] PATTERN [FILE....]

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

        字符匹配:

          .

          []

          [^]

        次數匹配:

          *

          ?

          +

          {m}

          {m,n}

          {m,}

          {0,n}


        位置錨定:

          ^

          $

          \<,\b

          \>,\b


        分組和引用:

          ()

          \1,\2,\3...


        或:

          |


  fgrep:PATTERN中全部的字符都被當作文本字符來處理;   



  其餘的文本處理命令:

    wc:

      wc [OPTION] ... [FILE]...

        -l:只顯示行數

        -w:只顯示字數

        -c:只顯示字符數


    cut:(剪輯)

      可以被cut命令修改的文件通常都是具備必定結構或格式的文本文檔。

      cut OPTION... [FILE]...

        -d, --delimiter=DELIM :指定在實施修剪操做時所依賴的分隔符,默認是空白符;

        -f, --fields=LIST :根據定義的分隔符來指定字段的編號。

          地址定界使用方法:

          #:選擇被指定的單個字段

          #,#:離散的多個被指定的單個字段

          #-#:連續的多個被指定的字段

        --output-delimiter=STRING :指定輸出分隔符


  awk:

    awk -F 「DELIMITER」 ‘[/PATTERN/]{print $1,$2.$3...$NF}’ FILE...

      -F 「DELIMITER」:指定字段分隔符,默認爲空白字符;

      $1,$2,$3....,$NF:根據字段分隔符切割出來的文本片斷都存放在相應的內部變量中;


  sort:sort lines of text files ,將文本文件按行繼續排序,默認排序規則是按ASCII表中的字符順序進行,這個排序標準可修改。

    -r,--reverse:逆向排序

    -R,--random-sort:隨機排序,這種隨機算法比較簡陋

    -u, --unique:重複出現的行只顯示一行,

    -n, --numeric-sort:按照數字數值大小排序。

    -t, --field-separator=SEP:指定字段分隔符

    -k, --key=KEYDEF:指明根據哪一個關鍵字段進行排序,通常和-t同時使用。


  uniq:report or omit repeated lines

     -d, --repeated:只顯示重複出現的行,並且重複出現的行只顯示一行。。

     -u, --unique:只顯示不重複的行。

     -c, --count:在每行之前綴的方式顯示重複行的重複次數;


  diff:compare files line by line

    同一個文件的不一樣修改版本;打補丁;


  patch:apply changes to files

     patch [-R] [-i patchfile] [file]

相關文章
相關標籤/搜索