详细说明参考: man 1 grep ,建议将选项写在前面。
1
2
3
grep [OPTIONS] PATTERN [FILE...]
grep [OPTIONS] -e PATTERN ... [FILE...]
grep [OPTIONS] -f FILE ... [FILE...]
使用正则表达式
使用 -E 参数
grep -E "^---$" ${FILE}
反转匹配模式
正常是显示含有匹配内容的行,可以使用 -v参数反转,显示那些没有匹配内容的行。
忽略大小写
使用 -i参数即可
指定最大match次数
使用 -m NUM 参数,在一个文件匹配到指定次数后就退出。
grep -m 1 "abc" ${FILE}
只匹配第一个
显示行号
使用 -n 参数,如果只需要获得行号,可以配合使用awk工具实现
递归查找文件夹
使用 -r 参数
排除文件夹
使用 --exclude-dir=[GLOB] ,可以添加多个,是支持通配符的!
静默模式
使用 -q, --quiet, --silent 参数,不显示结果,静默退出,适合用在脚本中 Quiet; do not write anything to standard output. Exit immediately with zero status if any match is found, even if an error was detected. Also see the -s or –no-messages option.
仅显示匹配的文件名
适合在查找批量文件时使用,显示其中含有匹配内容的文件名。 使用-l参数,还有一个 -L参数,是相反的效果,显示没有匹配内容的文件名
1
2
grep -l "hello" ./a.txt ./b.txt ./c/*
grep -l "hello" -r ./*
显示文件中的空行
可以这样使用
1
grep -E "^$" ./a.txt
匹配多个内容
1
2
3
grep -e "contexta" -e "context2" ./xxxfile
grep "contexta\|contextb" ./xxxfile
grep -E "contexta|contextb" ./xxxfile
注意,使用-E和不使用-e是有差别的,一些字符会转义。
显示匹配的次数
一个文件中有多行匹配内容时,获取匹配的行数。使用-c参数
1
2
grep -c "hello" ./a.txt
1
显示匹配行前后N行
有时找到了匹配行,希望跟着打印匹配行和后面紧跟的几行。
有三个参数,
-A NUM:A=after,显示匹配行及后面的n行-B NUM:B=before,显示匹配行及前面的n行-C NUM:C=context,显示匹配行前后的各n行