grep (global search regular expression(RE) and print out the line,全面搜索正則表達式並把行打印出來)是一種強大的文本搜索工具,它能使用正則表達式搜索文本,並把匹配的行打印出來。php
grep用法正則表達式
grep [-cinvrABC] 'word' filenameshell
參數說明:express
參數 | 說明 |
---|---|
-c | 統計 |
-n | 顯示行 |
-i | 不區分大小寫 |
-r | 遍歷全部的子目錄 |
-v | 取反 |
-A | 後面跟數字,過濾出符合要求的行及下面n行 |
-B | 後面跟數字,過濾出符合要求的行及上面n行 |
-C | 後面跟數字,過濾出符合要求的行及上下n行 |
經常使用示例編程
一、匹配字符並顯示行號工具
grep -n "root" /etc/passwd
code
二、匹配非"root"行並顯示行號blog
grep -vn "root" /etc/passwd
ci
三、匹配「root」行,並顯示下面兩行。文檔
grep -A2 -n 'root' /etc/passwd
四、匹配「root」行,並顯示上面兩行
grep -B2 -n 'root' /etc/passwd
五、匹配「root」行,並顯示上下兩行。
grep -C2 -n 'root' /etc/passwd
六、區分不大小寫顯示
grep -i "A" 1.txt
七、遍歷全部子目錄匹配
查找root目錄下全部包含「root」的文件並顯示出來
grep -r "root" /root/
grep正則操做
一、匹配帶數字的行
grep [0-9] /etc/passwd
[0-9]就是0到9的意思
二、匹配以非「#」開頭的行
grep -v '^#' 1.txt
三、匹配全部非數字
grep '[^0-9]' 2.txt
把^符號放在[]中就是非的意思。
四、匹配全部非數字開頭的行
grep '^[^0-9]' 2.txt
五、匹配全部「rxot」的行,」"."表明任意一個字符
grep "ro.t" 1.txt
六、多個字母匹配
grep 'o*o' passwd
""表明左邊的字符重複0-n次,也就是一個o也會匹配,ooo....多個也會匹配
七、貪婪匹配
grep '.*' 1.txt
"."表示貪婪匹配,全部的都會被匹配。「.」表示一個任意字符,「」表明*左邊的字符重複0-n次,加在一塊兒就是匹配全部的就叫貪婪匹配。
八、指定字符出現次數匹配
grep 'o\{2\}' 1.txt
{2}表示出現的次數,o是指指定的字符。\表示脫意
egrep
在grep中使用+ {} () | 須要時\進行脫意。不想脫意可使用 egrep 或者 grep -E
其它一些符號使用
示例:
一、()組合字符
egrep '(oo){2}' 1.txt
()表示組合的意思
二、「+」匹配
+相似於*,不一樣的是+是1-n次,*是0-n次,以下圖單個o不會被匹配到
三、「?」匹配
?表示左邊字符的重複次數爲0或者1
grep 'o\?t' 1.txt
四、 「|」 符號或者匹配
'|'表示或者,好比root|tes就是匹配‘root’或者‘test’的意思
grep -E 'root|test' 1.txt
擴展
過濾一個目錄下全部*.php文檔中含有eval的行。
grep -r --include "*.php" 'eval' /usr/local/php/