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/