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