1. 程式人生 > >linux grep用法大全

linux grep用法大全

原文:http://orchidllh.itpub.net/post/4020/24280


在Unix中經常會用到grep去選取所需要的資訊,用好grep有時可以到達意想不到的效果。  


Grep : g (globally) search for a re (regular expression_r_r ) and p (print ) the results.

1、引數:
-I :忽略大小寫
-c :列印匹配的行數
-l :從多個檔案中查詢包含匹配項
-v :查詢不包含匹配項的行
-n:列印包含匹配項的行和行標

2、RE(正則表示式)
\ 忽略正則表示式中特殊字元的原有含義
^ 匹配正則表示式的開始行
$ 匹配正則表示式的結束行
\< 從匹配正則表示式的行開始
\>; 到匹配正則表示式的行結束
[ ] 單個字元;如[A] 即A符合要求
[ - ] 範圍 ;如[A-Z]即A,B,C一直到Z都符合要求
. 所有的單個字元
* 所有字元,長度可以為0

# cat zhao.conf(顯示我們所查檔案的內容)
48 Dec 3BC1997 LPSX 68.00 LVX2A 138
483 Sept 5AP1996 USP 65.00 LVX2C 189
47 Oct 3ZL1998 LPSX 43.00 KVM9D 512
219 dec 2CC1999 CAD 23.00 PLV2C 68
484 nov 7PL1996 CAD 49.00 PLV2C 234
487 may 5PA1998 USP 37.00 KVM9D 644
471 May 7Zh1999 UDP 37.00 KV30D 643


# grep -c "48" zhao.conf(統計所有以“48”字元開頭的行有多少)

# grep -i "May" zhao.conf(不區分大小寫查詢“May”所有的行)
487 may 5PA1998 USP 37.00 KVM9D 644
471 May 7Zh1999 UDP 37.00 KV30D 643

# grep -n "48" zhao.conf(顯示行號;顯示匹配字元“48”所在的行的行號)
1:48 Dec 3BC1997 LPSX 68.00 LVX2A 138
2:483 Sept 5AP1996 USP 65.00 LVX2C 189
5:484 nov 7PL1996 CAD 49.00 PLV2C 234
6:487 may 5PA1998 USP 37.00 KVM9D 644

# grep -ni "may" zhao.conf(顯示行號;顯示匹配字元“may”所在的行的行號,不區分大小寫)

# grep -v "48" zhao.conf(顯示輸出沒有字元“48”所有的行)
47 Oct 3ZL1998 LPSX 43.00 KVM9D 512
219 dec 2CC1999 CAD 23.00 PLV2C 68
471 May 7Zh1999 UDP 37.00 KV30D 643

# grep "471" zhao.conf(顯示輸出字元“471”所在的行)
471 May 7Zh1999 UDP 37.00 KV30D 643

# grep "48>" zhao.conf(精確顯示輸出字元“48”所在的行)
48 Dec 3BC1997 LPSX 68.00 LVX2A 138

# grep "48<tab>" zhao.conf(顯示輸出以字元“48”開頭,並在字元“48”後是一個tab鍵所在的行
注:tab鍵,安一下tab鍵即可;和精確顯示輸出的結果是相同的)
48 Dec 3BC1997 LPSX 68.00 LVX2A 138

# grep "48[34]" zhao.conf(顯示輸出以字元“48”開頭,第三個字元是“3”或是“4”的所有的行)
483 Sept 5AP1996 USP 65.00 LVX2C 189
484 nov 7PL1996 CAD 49.00 PLV2C 234

# grep '48[34]' zhao.conf(注意使用單引號(‘’)和使用雙引號(“”)在Solaris8中輸出的結果是一樣的;
即:單引號、和雙引號是通用的,只要你養成一種習慣就好)
483 Sept 5AP1996 USP 65.00 LVX2C 189
484 nov 7PL1996 CAD 49.00 PLV2C 234

# grep "^[^48]" zhao.conf(顯示輸出行首不是字元“48”的行)
219 dec 2CC1999 CAD 23.00 PLV2C 68

# grep "[Mm]ay" zhao.conf(設定大小寫查詢:顯示輸出第一個字元以“M”或“m”開頭,以字元“ay”結束的行)
487 may 5PA1998 USP 37.00 KVM9D 644
471 May 7Zh1999 UDP 37.00 KV30D 643

# cat zhao.conf(再次顯示我們所使用的檔案的內容)
48 Dec 3BC1997 LPSX 68.00 LVX2A 138
483 Sept 5AP1996 USP 65.00 LVX2C 189
47 Oct 3ZL1998 LPSX 43.00 KVM9D 512
219 dec 2CC1999 CAD 23.00 PLV2C 68
484 nov 7PL1996 CAD 49.00 PLV2C 234
487 may 5PA1998 USP 37.00 KVM9D 644
471 May 7Zh1999 UDP 37.00 KV30D 643

# grep "K...D" zhao.conf(顯示輸出第一個字元是“K”,第二、三、四是任意字元,第五個字元是“D”所在的行)
47 Oct 3ZL1998 LPSX 43.00 KVM9D 512
487 may 5PA1998 USP 37.00 KVM9D 644
471 May 7Zh1999 UDP 37.00 KV30D 643

# grep "[A-Z][A-Z][A-Z][9]D" zhao.conf(顯示輸出第一個字元的範圍是“A-D”,第二個字元的範圍是“A-D”,
第三個字元的範圍是“A-D”,第四個字元是“9”,第五個字元的是“D”,所有的行:已知所查字串的長度為5位)
47 Oct 3ZL1998 LPSX 43.00 KVM9D 512
487 may 5PA1998 USP 37.00 KVM9D 644

# grep "5..1998" zhao.conf
487 may 5PA1998 USP 37.00 KVM9D 644

# grep "[35]..1998" zhao.conf(顯示輸出第一個字元是“3”或“5”,第二、三個字元是任意,以1998結尾的所 有行;已知所查字串的長度是7位)
47 Oct 3ZL1998 LPSX 43.00 KVM9D 512
487 may 5PA1998 USP 37.00 KVM9D 644
#

# grep "4{2,}" zhao.conf(模式出現機率查詢:顯示輸出字元“4”至少重複出現兩次的所有行)
487 may 5PA1998 USP 37.00 KVM9D 644

# grep "9{3,}" zhao.conf(模式出現機率查詢:顯示輸出字元“9”至少重複出現三次的所有行)
219 dec 2CC1999 CAD 23.00 PLV2C 68
471 May 7Zh1999 UDP 37.00 KV30D 643

# grep "9{2,3}" zhao.conf(模式出現機率查詢:顯示輸出字元“9”重複出現的次數在一定範圍內(重複出現2 次或3次)所有行)
48 Dec 3BC1997 LPSX 68.00 LVX2A 138
483 Sept 5AP1996 USP 65.00 LVX2C 189
47 Oct 3ZL1998 LPSX 43.00 KVM9D 512
219 dec 2CC1999 CAD 23.00 PLV2C 68
484 nov 7PL1996 CAD 49.00 PLV2C 234
487 may 5PA1998 USP 37.00 KVM9D 644
471 May 7Zh1999 UDP 37.00 KV30D 643

# grep -n "^$" zhao.conf(顯示輸出空行的行號)