参 数: -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、以递归的方式,在指定的目录及其子目录下面所有的文件中
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目录下的所有文件