天天看點

66.正規表達式,grep/egrep工具的使用知識小提示正規表達式指令名稱指令描述指令文法參數指令名稱指令描述案例:過濾一個或者多個指定的字元

grep '[0-9]' 這是表示比對裡面的0-9 的任何數字

grep '^[0-9]' 這是表示比對 以0或9 開頭的

grep '[^0-9] 這是表示比對除開 0-9,其他任何字元或者字母的行

grep '^[^0-9]' 這是表示比對除開 0-9.其他任何字元或者字母開頭的行

'[^]' '^[]' 這是兩種形式

'[^$]' 這是表示空行

在正規表達式中, “^” 表示行的開始, “$” 表示行的結尾,那麼空行則可以用 “^$” 表示,

[a?b] 表示a和b之間的中間那個?好可以表示任意一個。

按照個人的意思來了解的話,就是按照某種規則來執行

grep

grep(global search regular expression(RE) and print out the line,全面搜尋正規表達式并把行列印出來)是一種強大的文本搜尋工具,它能使用正規表達式搜尋文本,并把比對的行列印出來。

grep [參數][檔案]

-a 不要忽略二進制資料。

-A<顯示列數> 除了顯示符合範本樣式的那一行之外,并顯示該行之後的内容。

-b 在顯示符合範本樣式的那一行之外,并顯示該行之前的内容。

-c 計算符合範本樣式的列數。

-C<顯示列數>或-<顯示列數> 除了顯示符合範本樣式的那一列之外,并顯示該列之前後的内容。

-d<進行動作> 當指定要查找的是目錄而非檔案時,必須使用這項參數,否則grep指令将回報資訊并停止動作。

-e<範本樣式> 指定字元串作為查找檔案内容的範本樣式。

-E 将範本樣式為延伸的普通表示法來使用,意味着使用能使用擴充正規表達式。

-f<範本檔案> 指定範本檔案,其内容有一個或多個範本樣式,讓grep查找符合範本條件的檔案内容,格式為每一列的範本樣式。

-F 将範本樣式視為固定字元串的清單。

-G 将範本樣式視為普通的表示法來使用。

-h 在顯示符合範本樣式的那一列之前,不标示該列所屬的檔案名稱。

-H 在顯示符合範本樣式的那一列之前,标示該列的檔案名稱。

-i 忽略字元大小寫的差别。

-l 列出檔案内容符合指定的範本樣式的檔案名稱。

-L 列出檔案内容不符合指定的範本樣式的檔案名稱。

-n 在顯示符合範本樣式的那一列之前,标示出該列的編号。

-q 不顯示任何資訊。

-R/-r 此參數的效果和指定“-d recurse”參數相同。

-s 不顯示錯誤資訊。

-v 反轉查找。

-w 隻顯示全字元合的列。

-x 隻顯示全列符合的列。

-y 此參數效果跟“-i”相同。

-o 隻輸出檔案中比對到的部分。

[root@localhost ~]# cat /etc/passwd|grep root

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

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

[root@localhost ~]#

[root@localhost ~]# cat /etc/passwd|grep -c root 

2

[root@localhost ~]# cat /etc/passwd|grep -n root 

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

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

[root@localhost ~]# cat /etc/passwd|grep -v root 

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

adm:x:3:4:adm:/var/adm:/sbin/nologin

lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

sync:x:5:0:sync:/sbin:/bin/sync

shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

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

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

games:x:12:100:games:/usr/games:/sbin/nologin

ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

nobody:x:99:99:Nobody:/:/sbin/nologin

dbus:x:81:81:System message bus:/:/sbin/nologin

polkitd:x:999:998:User for polkitd:/:/sbin/nologin

avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin

avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin

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

sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

11-games:x:12:100:games:/usr/games:/sbin/nologin

12-ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

[root@localhost ~]# grep [0-9] /etc/passwd

[root@localhost ~]# grep 'o{2}' /etc/passwd

這裡用到了{ },其内部為數字,表示前面的字元要重複的次數。上例中表示包含有兩個o 即 ‘oo’ 的行。注意,{ }左右都需要加上脫意字元 ‘\’, 另外,使用{ }我們還可以表示一個範圍的,具體格式是 ‘{n1,n2}’ 其中n1<n2,表示重複n1到n2次前面的字元,n2還可以為空,則表示大于等于n1次。

egrep

grep的擴充

[root@localhost ~]# egrep '00+' /etc/passwd

本文轉自 閃電王 51CTO部落格,原文連結:http://blog.51cto.com/sdwaqw/2061287