grep與正則表達式

一、grep

       grep常用于文本搜索。通過自定義的模式(pattern),篩選出使用者需要的文本內容。除了有grep,還有egrep和fgrep。其中egrep = grep  –E,而fgrep則是不支持正則表達式。

       grep語法:grep [option] pattern [file] 

       常用option如下:

              -i:忽略字符的大小

              -n:顯示匹配的行號

              -c:統計匹配的行數

              -o:只顯示匹配到的內容

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

              -e:實現多個選項的or的關系

              -w:匹配整個單詞

              -v:顯示除pattern外的內容

              -F:相當于fgrep

              -E:相當于egrep

二、正則表達式

       1、匹配字符:

              .     匹配任意單個字符

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

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

              [:alnum:] 匹配字母和數字

              [:alpha:]  匹配任何英文

              [:lower:]  小寫英文字母

              [:upper:]  大寫英文字母

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

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

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

              [:digit:]   十進制數字

              [:xdigit:]  十六進制數字

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

              [:print:]   可打印的字符

              [:punct:]  標點符號

       2、匹配次數:

              *  匹配前面的字符任意次,包括0次。

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

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

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

              \{m,n\} 匹配前面的字符從m到n次

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

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

      3、定位

              ^ 定位行首,處于pattern的最左側

              $ 定位行尾,用于pattern的最右側

              \<或\b 詞首,用于pattern中單詞的左側

              \>或\b 詞尾,用于pattern中單詞的右側

              \<pattern\> 匹配整個單詞

       4、分組

              \( \)將一個或多個字符捆綁在一起,當作一個整體進行處理。

三、小結

       通過一和二的簡單介紹,現在將兩者結合在一起,并把學習后得到的一些理解寫下來。

1、pattern可以直接為想要得到的內容,如圖1。

grep與正則表達式

圖1

2、[ ]中括號里表示的是匹配的內容的范圍,用此括號匹配的結果是一個字符。比如[a-d]表示的是英文abcd這個范圍。[ ]不只表示一種范圍、內容,可以有多種,比如[a-z[:punct:]0-9]表示的是標點符號、英文字母a至z還有數字0-9。但是沒有[0-10]或者是[0-100]等類似的范圍,因為在pattern中把需要被過濾的內容都當作字符,而內容中的數字也被拆成一個個字符,沒有大小可言,簡單點說就是100其實是三個字符1、0、0。還有,單獨用類似上文“二”中的[:digit:]這樣的內容是會出錯的,需要在[:digit:]外再加一個中括號才能表示匹配得到的是一個在digit范圍內的字符,如圖2。

grep與正則表達式

圖2

3、再次強調一點,[ ]表示的是匹配得到一個字符,是一個。因此,需要得到多個字符,得用上文
“二”的第二點知識,如圖3。

grep與正則表達式

圖3

4、\< \>中間括起來的可以為英文和數字,但是不能是別的標點符號,如圖4。

grep與正則表達式

圖4

“\<\>”和“\>”是把一串連續的英文數字當作整體,而“\<”不是,如圖5最后兩個命令都匹配不到內容,是因為“\<\>”和“\>”認為存在abcd但不存在abc。

grep與正則表達式

圖5

5、\(和\)必須成對出現,并且他們被當作一個整體進行處理,并且分組括號中的模式匹配到的內容會被正則表達式引擎記錄于內部的變量,命名方式:\1,\2,\3…

示例:\(string1\+\(string2\)*\)

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

\2:string2

6、 grep –E 作用:除了\<和\>,其他的例如{ }、( ),沒有添加-E時,\{\}表示范圍,添加了-E選項后,直接{}表示范圍。

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

(0)
EminemEminem
上一篇 2017-07-29 17:27
下一篇 2017-07-29 17:41

相關推薦

  • 圖解 lvs 工作原理

    一.lvs 基本工作流程介紹  如圖1,ipvsadm定義lvs服務監聽的ip和port,并發送給ipvs,而ipvs是工作在netfilter的input鉤子上的程序,當input鏈中有目標ip屬于lvs服務的請求報文時,ipvs就會修改該報文的鏈路,使其不進入用戶空間而直接轉到postrouting鏈上,并轉發給其中一臺real server,…

    Linux干貨 2016-10-30
  • TCP/IP五層模型

    1、簡述osi七層模型和TCP/IP五層模型 網絡的七層模型是由OSI和CITT一起制定的開放系統互連參考模型: TCP/IP 五層模型可以分為:應用層,傳輸層,網絡層,數據鏈路層,物理層。 2、簡述ip route家族命令 語法:ip [ OPTIONS ] OBJECT { COMMAND | help } OBJECT={link ,addr,rout…

    2018-01-05
  • N25 The first week –Yorick

    1.計算機的組成及功能 ENIARC:馮諾依曼體系 1.1.運算器(所屬CPU)     進行計算 1.2.控制器(所屬CPU)     控制部件之間的協調,包括尋址操作     輔助性存儲(加速與提升CPU性能)     寄存器(鎖存數據)     緩存(緩…

    Linux干貨 2016-12-04
  • shell腳本一鍵分區

    #!/bin/bash #實現硬盤自動分區助手 echo "當前所有分區:" echo `fdisk -l|grep "Disk /dev/[sh]d"|cut -d: -f1|awk '{print $2 &q…

    Linux干貨 2016-07-26
  • 正則表達式

    正則表達式課程筆記

    2017-11-05
  • 密碼保護:測試信息, 順便貼上以前年少輕狂的內容.(未整理)

    無法提供摘要。這是一篇受保護的文章。

    Linux干貨 2017-07-11
欧美性久久久久