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