文本處理三劍客之grep與正則表達式

grepnginx

  • 什麼是grepgit

    grep: Global search REgular expression and Print out the line正則表達式

    做用:文本搜索工具,根據用戶指定的「模式」對目標文本逐行進行匹配檢查;打印匹配到的行express


  • grep的基礎用法vim

    格式: grep [OPTIONS] PATTERN [FILE...]less

    --color=auto: 對匹配到的文本着色顯示ide

    -v: 顯示不被pattern 匹配到的行工具

    -i: 忽略字符大小寫spa

    -n: : 顯示匹配的行號orm

    -c: 統計匹配的行數

    -o: 僅顯示匹配到的字符串

    -q: 靜默模式,不輸出任何信息

    -A #: after, 後#行

    -B #: before, 前#行

    -C # :context, 先後各#行

    -e :實現多個選項間的邏輯or 關係

    例:grep –e ‘cat ’ -e ‘dog’ file

    -w :匹配整個單詞

    -E :使用ERE

    -F :至關於fgrep 


正則表達式

  • 什麼是正則表達式  

    正則表達式(REGEXP):由一類特殊字符及文本字符所編寫的模式,其中有些字符(元字符)不表示字符字面意義,而表示控制或通配的功能

    程序支持 :grep,sed,awk,vim, less,nginx,varnish等

    大體分兩類:

    基本正則表達式:BRE

    擴展正則表達式:ERE


  • 字符匹配

        .    匹配任意單個字符

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

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

    [:alnum:] 字母和 數字

    [:alpha:] 表明任何英文大小寫字符,亦即 A-Z, a-z

    [:lower:] 小寫字母 [:upper:] 大寫字母    

    [:blank:] 空白字符(空格和製表符)

    [:space:] 水平和垂直的空白字符(比[:blank:] 包含的範圍廣)

    [:cntrl:] 不可打印的控制字符(退格、刪除、警鈴...) )

    [:digit:] 字 十進制數字 [:xdigit:] 十六進制數字

    [:graph:] 可打印的非空白字符

    [:print:] 可打印字符

    [:punct:] 標點符號


  • 匹配次數:用在要指定次數的字符後面,用於指定前面的字

    符要出現的次數

    * 匹配 前面的字符任意次,包括0次 (貪婪模式:儘量長的匹配)

    .* 任意 長度的任意字符

    \? 匹配 其前面的字符0或1次 

    \+ 匹配 其前面的字符至少1次 

    \{n\} 匹配 前面的字符n次

    \{m,n\} 匹配 前面的字符至少m次,至多n次 

    \{,n\} 匹配 前面的字符至多n次 

    \{n,\} 匹配 前面的字符至少n次


  • 位置錨定:定位出現的位置

    ^ 行首錨定,用於模式的最左側

    $ 行尾錨定,用於模式的最右側

    ^PATTERN$ 用於模式匹配整行

    ^$ 空行

    ^[[:space:]]*$ 空白行

    \< 或 或 \b 詞首錨定,用於單詞模式的左側

    \> 或 或 \b 詞尾錨定;用於單詞模式的右側

    \<PATTERN\> 匹配整個單詞


  • 分組

     \(\) 將一個或多個字符捆綁在一塊兒,看成一個總體進行處理,

    如:\(root\)\+分組括號中的模式匹配到的內容會被正則表達式引擎記錄於內部的變量中,這些變量的命名方式爲: \1, \2, \3, ...

    \1 表示從左側起第一個左括號以及與之匹配右括號之間的模式所匹配到的字符

 示例

    \(string1\+\(string2\)*\)

    \1 :string1\+\(string2\)*

    \2 :string2


  • 後向引用

    引用前面的分組括號中的模式所匹配字符 , 而非模式自己


擴展正則表達式

  • 次數匹配

    * :匹配前面字符任意次

    ? : 0 或1次 次

    + :1 次或屢次

    {m} :匹配m次 次

    {m,n} :至少m ,至多n次


  • 位置錨定

    ^ : 行首

    $ : 行尾

    \<, \b : 語首

    \>, \b :


  • 分組

    分組( )

    後向引用:\1, \2, ...


  • 或者

    a|b: a 或b

    C|cat: C 或cat

    (C|c)at:Cat 或cat

相關文章
相關標籤/搜索