天天看點

shell學習之- grep 用法簡明分析

shell之grep的應用

1,簡介

使用正規表達式的一個多用途文本搜尋工具.這個指令本來是ed行編輯器中的一個指令/過濾器:

        g/re/p -- global - regular expression - print.

基本格式

grep pattern [file...]

(1)grep 搜尋字元串 [filename]

(2)grep 正規表達式 [filename]

在檔案中搜尋所有 pattern 出現的位置, pattern 既可以是要搜尋的字元串,也可以是一個正規表達式.

注意:在輸入要搜尋的字元串時最好使用雙引号/而在模式比對使用正規表達式時,注意使用單引号

2,grep的選項

    -c 隻輸出比對行的計數

    -i 不區分大小寫(用于單字元)

    -n 顯示比對的行号

    -v 不顯示不包含比對文本的是以有行

    -s 不顯示錯誤資訊

    -e 使用擴充正規表達式

    更多的選項請檢視:man grep

3,常用grep執行個體

(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 -f '219|216' data.doc

(4) ...

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

5, 使用類名

可以使用國際模式比對的類名:

[[:upper:]]   [a-z]

[[:lower:]]   [a-z]

[[:digit:]]   [0-9]

[[:alnum:]]   [0-9a-za-z]

[[:space:]]   空格或tab

[[:alpha:]]   [a-za-z]

(1)使用

    grep '5[[:upper:]][[:upper:]]' data.doc     #查詢以5開頭以兩個大寫字母結尾的行

6,使用可選的檔案分隔符

grep -f'<td>|</td>' '{print $1}' data

轉載自http://blog.csdn.net/zg_hover/article/details/1853959