grep與正則表達式

文本處理中比較強悍的三個工具是:grep、sed、awk。

其中grep主要作用是對于用戶給出“模式”對文本逐行進行匹配檢查,然后進行打印。

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

格式:grep [選項] [正則表達式字符]  文件

 常用的選項:

    -v:反向查找,顯示沒有被匹配的的行

    -i:不區分大小寫

    -o:只顯示查找的內容

    -n:顯示匹配的行號

    -c:統計匹配的行數

    -q:不輸出任何內容

    -A #:顯示出查找到的內容的后#行

    -B #:顯示出查找到的內容的前#行

    -C #:顯示出查找到的內容的前后各#行

    -e:實現多個選項之間或的關系 例如:grep -e 'root' -e 'bash' file

    -w:整行匹配整個單詞

    -E:使用此選項開啟egrep


各個選項示例:

    -v選項:

示例:不顯示f1文件中帶有數字的行

[root@myhost testdir]# cat f1

ni hao 

aaaaaa123 

345 bbbbb

[root@myhost testdir]# grep -v [[:digit:]] f1

ni hao 


    -i選項:

示例:查找出文件中含有大小寫a的行

[root@myhost testdir]# cat f1

ni hao 

AAA123 

345 bbbbb

[root@myhost testdir]# grep -i a f1 

ni hao 

AAA123


    -n選項:

示例:查找出含有root的字符串并顯示行號 

[root@myhost testdir]# grep -n root /etc/passwd

1:root:x:0:0:root:/root:/bin/bash

11:operator:x:11:0:operator:/root:/sbin/nologin

    -o選項:

示例:在/etc/passwd文件中查找出root字符串

[root@myhost testdir]# grep -o root /etc/passwd

root

root

root

root


    -c選項:

示例:統計出/etc/passwd文件中以/bash/nologin結尾的一共有多少行

[root@myhost testdir]# grep -c "/sbin/nologin" /etc/passwd 

29


     -A選項:

示例:過濾出lisi用戶所在行及后一行

[root@myhost testdir]# grep lisi -A 1 /etc/passwd

lisi:x:502:502::/home/lisi:/bin/bash

wangwu:x:503:503::/home/wangwu:/bin/bash


    -B選項:

示例:過濾出mysql系統用戶行及前兩行

[root@myhost testdir]# grep mysql -B 2 /etc/passwd

saslauth:x:498:76:Saslauthd user:/var/empty/saslauth:/sbin/nologin

postfix:x:89:89::/var/spool/postfix:/sbin/nologin

mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bash


    -C選項:

示例:過濾出mail系統用戶所在行及前后各一行

[root@myhost testdir]# grep mail -C 1 /etc/passwd

halt:x:7:0:halt:/sbin:/sbin/halt

mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin

    

    -e選項:

示例:過濾出f1文件中包含數字或小寫字母的行

[root@myhost testdir]# cat f1

ni hao 

AAA123 

345 bbbbb

[root@myhost testdir]# grep -e"[0-9]" -e "[a-z]" f1

ni hao 

345 bbbbb


     -w選項:

示例:查找出f1文件中的含有which單詞的行

[root@myhost testdir]# cat f1

which

whichabc

abcwhich

[root@myhost testdir]# grep -w which f1

which

[root@myhost testdir]# grep which f1

which

whichabc

abcwhich

 

    -E選項


正則表達式篇:

 正則表達式是一種文本模式,包括普通字符(例如,a 到 z 之間的字母)和特殊字符(稱為元字符)。模式描述在搜索文本時要匹配的一個或多個字符串其中有 些字符(元字符)不表示字符字面意義,而表示控制或通配的功能

 正則表達式分為兩類:

             基本正則表達式:BRE

             擴展正則表達式:ERE

  元字符分類::字符匹配、匹配次數、位置錨定、分組 


字符匹配:

     . : 匹配任意一個字符

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

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

字符集:

     [:digit:] : 代表所有數字

     [:lower:] : 代表所有小寫字母

     [:upper:] : 代表所有大寫字母

     [:alpha:] : 代表所有大小寫字母

     [:alunm:] : 代表所有字母和數字

     [:space:] : 代表空格和Tab

     [:punct:] : 代表所有標點符號

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

   

     *:匹配前面字符任意次包括0次

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

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

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

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

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

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

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

     

位置錨定:定位字符出現的位置

      

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

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

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

     ^$:表示空行

     \< 或 \b 詞首錨定,用于錨定詞的左側

     \> 或 \b 詞尾錨定,用于錨定詞的右側

        \<模式\> 用于錨定整個單詞

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

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

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

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

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

              \2: string2 

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


      



    






   


      



    


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

(0)
ZJMZJM
上一篇 2016-08-08 16:15
下一篇 2016-08-08

相關推薦

  • btrfs文件系統常用命令使用

    Btrfs,也可稱為B-tree,Butter FS,Better FS,是CentOS7中一種新型的文件系統。 核心特性: 1.多物理卷支持,可由多個物理卷(pv)組成,支持raid,以聯機添加刪除 2.支持寫實復制(Copy on Write,Cow) 復制一份修改,改好之后用指針替換,出錯時指回原本文件。而不是就地修改 3.數據及元數據校驗碼:chec…

    Linux干貨 2016-03-07
  • Linux文件與目錄管理之權限與命令之間的關系

    Linux文件與目錄管理之權限與命令之間的關系 我們知道權限對于用戶賬戶來說是非常重要的,因為它可以限制用戶能不能讀取/新建/刪除/修改文件或目錄。在這我們就來說明下什么命令在什么樣的權限下才能夠運行。         讓用戶能進入某目錄成為“可工作目錄”的基本權限是什么     &nbs…

    Linux干貨 2017-04-24
  • 邏輯卷的命令解析

    前言    lvm是logical volume manager(邏輯卷管理器)的簡稱,通過將若干個磁盤分區連接成一個整塊的卷組(volumegroup),形成一個存儲池,管理員可以在卷組上隨意創建邏輯卷(logicalvolumes),并進一步在邏輯卷組上創建文件系 統。管理員通過LVM可以方便的調整存儲卷組的大小,并且可以對磁盤存儲按…

    Linux干貨 2016-08-30
  • linux網絡管理之二

     IP 地址由兩部分組成:                        網絡ID: 最前面連續位                …

    2017-03-18
  • 馬哥教育網絡班22期第一周課程練習2-未聞花名

    語法:export [-fnp][變量名稱]=[變量設置值] 補充說明:在shell中執行程序時,shell會提供一組環境變量。export可新增,修改或刪除環境變量,供后續執行的程序使用。export的效力僅及于該此登陸操作。 參數: -f 代表[變量名稱]中為函數名稱。 -n 刪除指定的變量。變量實際上并未刪除,只是不會輸出到后續指令的執行環境中。 -p…

    Linux干貨 2016-08-15
  • CentOS 6.5 LVM磁盤管理學習筆記

    在系統運維和服務器管理過程中,經常遇到服務器磁盤容量不足,需要在線擴容的情況。普通磁盤分區的管理方式在邏輯分區劃好之后就無法改變其大小。而LVM可以實現Linux服務器下面磁盤空間的在線擴容和動態管理,相對于普通的磁盤分區有很大的靈活性。一、LVM簡介    LVM是 Logical VolumeManager(邏輯卷管理)的簡…

    Linux干貨 2016-08-29
欧美性久久久久