天天看點

linux grep指令的使用總結

1、功能描述

grep 指令在一個或多個檔案中查找與指定模式比對的字元串。如果模式裡包含有空格,必須用引号括起來。grep的模式隻能是一個被引号括起來的字元串或者是一個單詞,後面緊跟着的參數都被當作檔案名。grep指令把結果輸出到标準輸出上,并不改變被搜尋的源檔案。

2、指令格式

grep [選項] pattern filename1 filename2 ...

3、主要參數

[options]主要參數:

選項

功能

-b

在每一行前面加上其所在的塊号,根據上下文定位磁盤塊時可能會用到。

-c

顯示比對到的行的數目,而不顯示行的内容

-h

不顯示檔案名

-i

比較字元的時候忽略大小寫的差別

-l

隻列出比對行所在檔案的檔案名(每個檔案名隻列一次),檔案名之間用換行符分隔。

-n

在每一行前面加上它在檔案中的相對行号

-s

無聲操作,即隻顯示報錯資訊,以檢查退出狀态

-v

反向查找,隻顯示不比對的行

-w

全字比對

grep –n  ‘^south’ datafile   ----- 選項-n在找到指定模式的行前面加上其行号在一并輸出

grep –i  ‘pat’ datafile   ----- 選項-i 關閉大小寫敏感性,表達式pat包含任意大小寫的組合都符合

grep –v ‘test’ datafile -----查找所有不包含test的行

grep –l ‘test’ *    ----- 查詢輸出目前目錄下所有包含test的檔案名

4、支援的正規表達式元字元

元字元

執行個體

比對結果

備注

^

行首定位符

grep “^test” datafile

列印所有以test開頭的行

$

行尾定位符

grep “test$” datafile

列印所有以test結尾的行

.  (點)

比對除“/n”之外的任何單個字元

/t..t/

比對包含一個t,後跟兩個字元,在跟一個t的行。

定位.本身隻需加上轉義符即可

*

零次或多次比對前面的字元或子表達式

/t*est/

比對包含0個或者多個t後跟est的行。可以比對:est、test、ttest

[]

比對一組字元中的任一個

/[Tt]est/

比對包含Test或者test行

[^]

比對不在指定組内的字元

/[^A-Z]/

比對不在範圍A至Z之間的任一個字元

/

詞首定位符

//

比對包含以love開頭的詞的行。如:love、lover

grep “/列印所有包含以north開頭的單詞的行。

/>

詞尾定位符

/love/>/

比對包含以love結尾的詞的行。 

如:aalove

grep “north/>” datafile 

列印所有包含以north結尾的單詞的行。

/(pattern/)

比對模式pattern,并将之存儲在寄存器中,供之後使用。

//(love/)able /1r/

最多可以使用9個标簽,模式中最左邊的标簽是第一個。例如:模式love被儲存為标簽1,用/1表示。左邊這個例子中,查找串是一個loveable 後跟 lover的長串。

sed、vi、grep支援。 

例如: 

sed “s//(love/)//1able/” 功能是将檔案中的love替換成loveable。

x/{m/} 或 

x/{m,/} 或 

x/{m,n/}

\

字元x的重複出現; 

m次,至少m次,至少m次且不超過n次。

轉義字元

o/{5,10/}

比對包含5-10個連續的字母o的行。

vi和gre

繼續閱讀