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

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

 

文本處理工具:

 

Linux上處理文本三劍客:

    Grep:文本過濾器工具(模式:pattern)工具;

    Sed: stream editor,流編輯器;文本編輯工具;

    Awk: linux上實現為gawk,文本報告生成器(格式化文本);

 

    正則表達式:regual expresslon,REGEXP

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

            分兩類:

                基本正則表達式:BRE

                擴展正則表達式:ERE

 

         元字符:、(hello[[:space:]]\+\)\+

 

Grep : global search REgular expression and print out the line.

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

     模式:有贈則表達式的元字符及文本字符所編寫出的過濾條件;

 

     正則表達式引擎;

 

     Grep [options] PATTERN [FILE….]

     Grep [options] [-e PATTERN | -f FILE] [FILE…..]

 

         OPTIONS:

             –color=auto: 對匹配到文本進行著色后高亮顯示

             -i:忽略字符的大小寫

             -0:只顯示匹配到的字符本身

             -v:顯示不能被模式匹配到的行

             -E: 支持使用擴展正則表達式元字符:

             -q:–quiet,–silent:靜默模式,既不輸出任何信息;

 

             -A#: after,后#行

             -B#:before,前#行

             -C#:前后#行

 

基本正則表達式元字符:

                     .   : 匹配任意單個字符;  

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

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

                     [:digit:]、[:lower:]、[:upper:]、[:alpha:]、[:alnum:] 、[:punct:]、[:space:]

正則表達式

v  匹配次數:用在要指定次數的字符后面,用于指定前面的字 符要出現的次數

        *:匹配前面的字符任意次,包括0次 貪婪模式:盡可能長的匹配

        .*:任意長度的任意字符

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

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

     \{m\}:匹配前面的字符m次

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

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

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

 

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

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

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

        ^PATTERN$: 用于模式匹配整行

        ^$: 空行

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

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

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

         \<PATTERN\>:匹配整個單詞

 

 分組:\(\):將一個或多個字符捆綁在一起,當作一個整體進 行處理,如:\(root\)\+

     分組括號中的模式匹配到的內容會被正則表達式引擎記錄 于內部的變量中,這些變量的命名方式為: \1, \2, \3, …

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

     實例:

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

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

         \2: string2

      后向引用:引用前面的分組括號中的模式所匹配字符(而 非模式本身)

 

egrep及擴展的正則表達式 v

     egrep = grep -E

   vegrep [OPTIONS] PATTERN [FILE…] v

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

     字符匹配:

         . 任意單個字符

         [] 指定范圍的字符

         [^] 不在指定范圍的字符

    次數匹配:

         *:匹配前面字符任意次

         ?: 0或1次

         +:1次或多次

         {m}:匹配m次

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

 

     位置錨定:

         ^  :行首

         $  :行尾

         \<, \b :語首

         \>, \b :語尾 v

      分組:

          ()

          后向引用:\1, \2, … v

       或者:

           a|b

           C|cat: C或cat

           (C|c)at:Cat或cat

             

原創文章,作者:xiaoqiang512,如若轉載,請注明出處:http://www.www58058.com/33244

(0)
xiaoqiang512xiaoqiang512
上一篇 2016-08-12 09:02
下一篇 2016-08-12 09:02

相關推薦

  • sed

    sed Stream EDitor, 行編輯器 sed是一種流編輯器,它一次處理一行內容。處理時,把當前處理的行存儲在臨時緩沖區中,稱為“模式空間”(pattern space),接著用sed命令處理緩沖區中的內容,處理完成后,把緩沖區的內容送往屏幕。接著處理下一行,這樣不斷重復,直到文件末尾。文件內容并沒有改變,除非使用重定向存儲輸出。 Sed主要用來自動…

    Linux干貨 2017-04-26
  • linux基礎之lvm操作流程

    linux基礎之lvm基本操作流程    LVM是 Logical Volume Manager(邏輯卷管理)的簡寫,它是Linux環境下對磁盤分區進行管理的一種機制,它由Heinz Mauelshagen在Linux 2.4內核上實現,目前最新版本為:穩定版1.0.5,開發版 1.1.0-rc2,以及LVM2開發版。Linux用戶安裝L…

    2017-03-19
  • 新手報到

    在開班的第一天為自己立下flag,看畢業時能否實現自己的預期。

    2018-03-26
  • 了解sed

    本博客分為四個部分:sed介紹、sed用法、sed高級用法(簡略帶過)、相關例題。通過本文可以大致了解sed命令。深度可以當成是課前預習吧。 1、sed介紹Stream EDitor, 行編輯器 sed是一種流編輯器,它一次處理一行內容。處理時,把 當前處理的行存儲在臨時緩沖區中,稱為“模式空間”( pattern space),接著用sed命令處理緩沖區中…

    Linux干貨 2017-04-25
  • N26 第五周作業

    1、顯示/boot/grub/grub.conf中以至少一個空白字符開頭的行; [root@localhost ~]# cat /boot/grub/grub.conf | grep "^[[:space:]]" 2、顯示/etc/rc.d/rc.sysinit文件中以#開頭,后…

    Linux干貨 2017-01-26
  • bash基礎特性(一)之命令歷史,命令補存,路勁補存,命令行展開,命令執行狀態結果和引用

    bash是Unix shell的一種,在1987年由布萊恩·福克斯為了GNU計劃而編寫。1989年發布第一個正式版本,原先是計劃用在GNU操作系統上,但能運行于大多數類Unix系統的操作系統之上,包括Linux與Mac OS X v10.4都將它作為默認shell。 Bourne shell是一個早期的重要shell,由史蒂夫·伯恩在1978年前后編寫,并同…

    2017-09-20
欧美性久久久久