天天看點

linux grep的使用舉例

1、grep指令使用簡單執行個體

$ grep ‘test’ d*

顯示所有以d開頭的檔案中包含 test的行。

$ grep ‘test’ aa bb cc

顯示在aa,bb,cc檔案中比對test的行。

$ grep ‘[a-z]\{5\}’ aa

顯示所有包含每個字元串至少有5個連續小寫字元的字元串的行。

$ grep ‘w\(es\)t.*\1′ aa

如果west被比對,則es就被存儲到記憶體中,并标記為1,然後搜尋任意個字元(.*),這些字元後面緊跟着 另外一個es(\1),找到就顯示該行。如果用egrep或grep -E,就不用”\”号進行轉義,直接寫成’w(es)t.*\1′就可以了。

2、grep指令使用複雜執行個體

假設您正在’/usr/src/Linux/Doc’目錄下搜尋帶字元 串’magic’的檔案:

$ grep magic /usr/src/Linux/Doc/*

sysrq.txt:* How do I enable the magic SysRQ key?

sysrq.txt:* How do I use the magic SysRQ key?

其中檔案’sysrp.txt’包含該字元串,讨論的是 SysRQ 的功能。

預設情況下,’grep’隻搜尋目前目錄。如果 此目錄下有許多子目錄,’grep’會以如下形式列出:

grep: sound: Is a directory

這可能會使’grep’ 的輸出難于閱讀。這裡有兩種解決的辦法:

<b>明确要求搜尋子目錄:grep -r</b>

<b>或忽略子目錄:grep -d skip</b>

如果有很多 輸出時,您可以通過管道将其轉到’less’上閱讀:

$ grep magic /usr/src/Linux/Documentation/* | less

這樣,您就可以更友善地閱讀。

有一點要注意,您必需提供一個檔案過濾方式(搜尋全部檔案的話用 *)。如果您忘了,’grep’會一直等着,直到該程式被中斷。如果您遇到了這樣的情況,按 ,然後再試。

下面還有一些有意思的指令行參數:

grep -i pattern files :不區分大小寫地搜尋。預設情況區分大小寫,

grep -l pattern files :隻列出比對的檔案名,

grep -L pattern files :列出不比對的檔案名,

grep -w pattern files :隻比對整個單詞,而不是字元串的一部分(如比對’magic’,而不是’magical’),

grep -C number pattern files :比對的上下文分别顯示[number]行,

grep pattern1 | pattern2 files :顯示比對 pattern1 或 pattern2 的行,

grep pattern1 files | grep pattern2 :顯示既比對 pattern1 又比對 pattern2 的行。

grep -n pattern files  即可顯示行号資訊

grep -c pattern files  即可查找總行數

這裡還有些用于搜尋的特殊符号:

\ 分别标注單詞的開始與結尾。

例如:

grep man * 會比對 ‘Batman’、’manic’、’man’等,

grep ‘\grep ‘\’ 隻比對’man’,而不是’Batman’或’manic’等其他的字元串。

‘^’:指比對的字元串在行首,

‘$’:指比對的字元串在行 尾,

<b>3、常用grep執行個體</b>

(1)多個檔案查詢

    grep "sort" *.doc       #見檔案名的比對

(2)行比對:輸出比對行的計數

    grep -c "48" data.doc   #輸出文檔中含有48字元的行數

(3)顯示比對行和行數

    grep -n "48" data.doc       #顯示所有比對48的行和行号

(4)顯示非比對的行

    grep -vn "48" data.doc      #輸出所有不包含48的行

(5)大小寫敏感

    grep -i "ab" data.doc       #輸出所有含有ab或Ab的字元串的行

4, 正規表達式的應用

(1)正規表達式的應用 (注意:最好把正規表達式用單引号括起來)

    grep '[239].' data.doc      #輸出所有含有以2,3或9開頭的,并且是兩個數字的行

(2)不比對測試

    grep '^[^48]' data.doc      #不比對行首是48的行

(3)使用擴充模式比對

    grep -E '219|216' data.doc

(4) ...

    這需要在實踐中不斷應用和總結,熟練掌握正規表達式。

<b>4、grep常用形式(持續更新)</b>

繼續閱讀