参 数:
-a或--text 不要忽略二进制的数据。
-A<显示列数>或--after-context=<显示列数> 除了显示符合范本样式的那一列之外,并显示该列之后的内容。
-b或--byte-offset 在显示符合范本样式的那一列之前,标示出该列第一个字符的位编号。
-B<显示列数>或--before-context=<显示列数> 除了显示符合范本样式的那一列之外,并显示该列之前的内容。
-c或--count 计算符合范本样式的列数。
-C<显示列数>或--context=<显示列数>或-<显示列数> 除了显示符合范本样式的那一列之外,并显示该列之前后的内容。
-d<进行动作>或--directories=<进行动作> 当指定要查找的是文件夹而非文件时。必须使用这项參数,否则grep指令将回报信息并停止动作。
-e<范本样式>或--regexp=<范本样式> 指定字符串做为查找文件内容的范本样式。
-E或--extended-regexp 将范本样式为延伸的普通表示法来使用。
-f <范本文件>或--file=<范本文件> 指定范本文件,其内容含有一个或多个范本样式,让grep查找符合范本条件的文件内容,格式为每列一个范本样式。
-F或--fixed-regexp 将范本样式视为固定字符串的列表。
-G或--basic-regexp 将范本样式视为普通的表示法来使用。
-h或--no-filename 在显示符合范本样式的那一列之前,不标示该列所属的文件名。
-H或--with-filename 在显示符合范本样式的那一列之前,表示该列所属的文件名。
-i 或--ignore-case 忽略字符大写和小写的区别。
-l 或--file-with-matches 列出文件内容符合指定的范本样式的文件名。
-L 或--files-without-match 列出文件内容不符合指定的范本样式的文件名。
-n 或--line-number 在显示符合范本样式的那一列之前,标示出该列的列数编号。
-q或--quiet或--silent 不显示不论什么信息。
-r或--recursive 此參数的效果和指定“-d recurse”參数同样。
-s或--no-messages 不显示错误信息。
-v或--revert-match 反转查找。
-V或--version 显示版本号信息。
-w或--word-regexp 仅仅显示全字符合的列。
-x或--line-regexp 仅仅显示全列符合的列。
-y 此參数的效果和指定“-i”參数同样。
--exclude 搜索时排除某些文件
--exclude-dir 搜索时排除某些目录
--help 在线帮助。
不指定搜索的对象,则默认为当前目录
grep常用于管道拼接,即在前面执行的结果中查找包含相关字符串的内容,例如:ps -ef |grep redis
( ps -ef :查看系统进程情况 )
1、查询单个文件(trace.log)中包含指定text的行:
grep text trace.log
2、利用*适配符,在所有包含log的文件名中 查询 text
grep text *log*
3、以递归的方式,在指定的目录及其子目录下面所有的文件中 查询 text
grep -r text /home/logs
4、查找所有不包含 text 的行,即反向查找
grep -v text *log
5、除了查找的那一行之外,多显示 其之后(-A)/之前(-B)/前后(-C) 的n行的值
grep text -A/B/C n *log
6、匹配多个字符串(1)或关系,匹配其中一个就显示;(2)与关系,匹配所有才显示
//或
grep -E "text1|text2|text3" *log
//与
grep text1 *log |grep text2 |grep text3
7、让匹配的字符串显示颜色
grep text *log --color=auto
//或者
grep text *log --col
8、匹配key.txt文件中所有关键字的行
cat filename |grep -f key.txt //在打开的filename文件中查找
9、搜索时排除某些文件
grep -rn "test" --exclude=*.txt //查找包含text,但是排除txt文件
grep -rn "text" --exclude-from=skip.txt //排除的条件存储在skip.txt文件里
grep -rn "text" --exclude-dir=aaa //排除aaa目录下的所有文件