1. 程式人生 > >Linux grep常用命令

Linux grep常用命令

在一個檔案中同時查詢多個字串:

並集語法:

grep -e 'pattern1 -e 'pattern2 file

或集語法:

1、grep -E 'pattern1|pattern2' file

2、egrep 'pattern1|pattern2' file

3、grep 'pattern1|pattern2' file

egrep 等同於 grep -E 。它會以擴充套件的正則表示式的模式來解釋模式。下面來自 grep 的幫助頁:
基本的正則表示式元字元 ?、+、 {、 |、 ( 和 ) 已經失去了它們原來的意義,要使用的話用反斜線的版本 /?、/+、/{、/|、/( 和 /) 來代替。 傳統的 egrep 並不支援 { 元字元,一些 egrep 的實現是以 /{ 替代的,所以一個可移植的指令碼應該避免在 grep -E 使用 { 符號,要匹配字面的 { 應該使用 [}]。
GNU grep -E 試圖支援傳統的用法,如果 { 出在在無效的間隔規範字符串這前,它就會假定 { 不是特殊字元。
例如,grep -E ‘{1′ 命令搜尋包含 {1 兩個字元的串,而不會報出正則表示式語法錯誤。
POSIX.2 標準允許這種操作的擴充套件,但在可移植指令碼檔案裡應該避免這樣使用。

在多個檔案中同時查詢一個或多個字串:

語法:

grep 'pattern*' file1 file2

例子:
檢索日誌檔案中的cms及"moduleId":6000關鍵詞

##實時檢視
$ tail -f /export/Logs/Domains/m.jd.id/server1/logs/catalina.out|grep --color -E 'cms|"moduleId":6000'
##檢視所有歷史
$ grep --color -E 'cms|"moduleId":6000'
/export/Logs/Domains/m.jd.id/server1/logs/catalina.out

完全匹配關鍵詞

$ grep -w 'cms\|campaign\' 
/export/Logs/Domains/m.jd.id/server1/logs/catalina.out

使用egrep命令,使用擴充套件的正則表示式

$ egrep -w 'cms|campaign' /export/Logs/Domains/m.jd.id/server1/logs/catalina.out

使用grep的-e引數關鍵詞

$ grep -e 'cms|campaign' /export/Logs/Domains/m.jd.id/server1/logs/catalina.out

使用-i引數忽略大小寫,–color高亮顯示匹配結果

$ egrep -wi --color 'cms|campaign' 
/export/Logs/Domains/m.jd.id/server1/logs/catalina.out

示例輸出 

使用-i引數忽略大小寫,–color高亮顯示匹配結果

$ egrep -wi --color 'cms|campaign' /export/Logs/Domains/m.jd.id/server1/logs/*.out

示例輸出 

 

遞迴查詢

# egrep -Rwi --color 'foo|bar' /etc/