1.基本语法
grep [option] pattern file
grep [-acinv] [--color=auto] 'key' filename
1) 参数选项:
-n 结果显示行号
-c 关键字匹配的行次数
-i 关键字忽略大小写
-v 反向选择
-e 后跟一个正则表达式
-m10 查找到10次就停止继续查找
-A10 显示关键字所在行和后10行
-B10 显示关键字所在行和前10行
-C10 显示关键字所在行和前后10行
--color=auto 关键字高亮显示(多个参数一起使用,color属性需要放最后,注意是两个短线)
2) grep 可以跟正则,详细信息
grep -n t[ea]st info.log 查询test或者tast ([]一个字符)
grep -n [^g]oo 查询oo但不包含goo的行 (^在[]内表示反向选择)
grep -n [^a-z]oo 查询oo但不包含小写字母+oo的行 ([a-z] 一个小写字母)
grep -n [0-9] 查询包含数字的行 ([0-9] 一个数字)
grep -n ^the 查询the开头的行 (^不在[]内表示定位到行首)
grep -n ^[^a-zA-Z] 查询不是以字母开头的行 (^反向和定位)
grep -n \.$ 查询以.结尾的行 (\转义 $结尾)
grep -n ^$ 找出空白行 (^$ 空白行)
grep -n g..d 查询g??d的字符串的行(.表示一个)
grep -n ooo* 查询至少包含两个oo的行(* 表示重复前边一个字符0-n次)
grep -n goo*g 查询g开头g结尾且中间至少包含一个o的行
grep -n g.*g 查询g开头g结尾且中间字符可有可无的行 (.*表示没有或有任意个字符)
grep -n o\{2\} 查询oo的行({2} 前边字符重复2次,{}转义)
2.多关键字grep
1) 多条件或
grep -E '关键字1|关键字2|关键字3' info.log
匹配关键字1或关键字2或关键字3到任意一个,展示该行
2) 多条件组合交集
grep '关键字1' info.log | grep '关键字2' | grep '关键字3'
匹配到关键字1和关键字2和关键字3全部,展示该行
3.多文件grep
1) 当前目录下grep文件
grep 'key' test1.txt test2.txt
2) 当前目录下grep文件夹以及文件夹下所有文件(递归)
grep -r 'key' /ss/*
4.demo
实例1:查找进程
ps -ef | grep svn
实例2:查找指定进程个数
ps -ef | grep svn -c 或者 ps -ef | grep -c svn
实例3:从文件中读取关键字进行搜索
cat test.txt | grep -f test2.txt
实例5:从文件中查找关键词,并且对关键字加上颜色显示
grep 'test' --color test.txt
grep -nf -C5 'CN_YAG1004' /*info.log
实例6:从多个文件中查找关键词
grep 'test' test1.txt test2.txt
实例7:找出以g开头的行内容
cat test.txt | grep ^u
实例8:输出非u开头的行内容
cat test.txt | grep ^[^u]
实例9:输出以hat结尾的行内容
cat test.txt | grep hat$
实例10:显示包含9或者nine字符的内容行
cat test.txt | grep -E '9|nine'