正則表達式

grep文本過濾(模式:pattern)工具

  • grep egrep fgrep(不支持正則表達式搜索)

    • 貪婪模式:儘可能長的匹配

    • grep: Global search REgular expression and Print out the line

    • 作用: 文本檢索工具,根據用戶指定的“模式”對目標文本逐行進行匹配檢查;打印匹配到的行;

    • 模式: 由正則表達式字符及文本字符所編寫的過濾條件;

    • RECEXP: 由一類特殊字符及文本字符所編寫的模式;其中有些字符不表示字符字面意義,而表示控制或通配的功能;

        分兩類
           基本正則表達式:BRE
           擴展正則表達式: ERE
                        grep-E, egrep
    • 正則表達式引擎:


    • 選項

        --color=auto: 對匹配到的文本着色顯示
        -v: 顯示不能被pattern匹配到的行
        -o: 僅顯示匹配到的字符串
        -i: 匹配時忽略字符大小寫
        -q: 靜默模式,不輸出任何信息
        -A #:after,後#行
        -B #:before,前#行
        -C #:context,前後各#行
        -w:匹配整個單詞
      
        -E: 使用ERE
  1. grep [OPTIONS] PATTERN [FILE...]

基本正則表達式元字符
  • 字符匹配:

      .: 匹配任意單個字符
      []: 匹配指定範圍內的任意單個字符
      [^]:匹配指定範圍外的任意單個字符
      [:alnum:] 字母和數字
      [:alpha:] 代表任何英文大小寫字符,亦即 A-Z, a-z
      [:lower:] 小寫字母 [:upper:] 大寫字母
      [:blank:] 空白字符(空格和製表符)
      [:space:] 水平和垂直的空白字符(比[:blank:]包含的範圍廣)
      [:cntrl:] 不可打印的控制字符(退格、刪除、警鈴...)
      [:digit:] 十進制數字 
      [:xdigit:]十六進制數字
      [:graph:] 可打印的非空白字符
      [:print:] 可打印字符
      [:punct:] 標點符號
  • 匹配次數:用在要指定次數的字符後面,用於指定前面的字符要出現的次數;

      * :   匹配前面的字符任意次
      .*:    任意長度的任意字符
      \?:    匹配前面的字符一次或零次;即前面的可有可無
      \+:    匹配前面的字符至少一次
      \{m\}: 匹配前面的字符m次
      \{m,n\}:匹配前面的字符至少m次,至多n次;
      \{0,n\}: 匹配前面的字符至多n次
      \{m,\}:  匹配前面的字符至少m次
  • 位置錨定:

      ^: 行首錨定:用於模式的最左側
      $:行尾錨定; 用於模式的最右側;
      ^PATTERN$ :用於匹配模式的整行;
      ^$: 空行;
      ^[[:space:]]*$
      \< 或 \b;詞首錨定;用於單詞模式的左側;
      \> 或 \b:詞尾錨定;用於單詞模式的右側;
      \<PATTERN\>: 匹配整個單詞;
  • 分組:

      \(\): 將一個或多個字符捆綁在一起,當作一個整體進行處理;
      \(xy\)*ab
    * Note:分組括號中的模式匹配到的內容會被正則表達式記錄於內部的變量中,這些變量的命名方式爲: \1, \2, \3,...
      \1: 從左側起,第一個左括號以及與之匹配右括號之間的模式所匹配到的字符;
    
      \(ab\+\(xy\)*\):
           \1: ab\+\(xy\)*
           \2;xy
  • 後向引用:引用前面的分組括號中的模式所匹配字符,(而非模式本身)


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章