grep命令使用:
-e: 使用正则搜索
-i: 不区分大小写
-v: 查找不包含指定内容的行
-w: 按单词搜索
-c: 统计匹配到的次数
-n: 显示行号
-r: 逐层遍历目录查找
-A: 显示匹配行及后面多少行, 如: -A3, 则表示显示匹配行及后3行
-B: 显示匹配行及前面多少行, 如: -B3, 则表示显示匹配行及前3行
-C: 显示匹配行前后多少行, 如: -C3, 则表示显示批量行前后3行
–color: 匹配到的内容高亮显示
–include: 指定匹配的文件类型
–exclude: 过滤不需要匹配的文件类型
#cat shell.txt:
aa bb cc dd
main sub go net
work linux api english
math chinese hat cat
AA is a test
Mark is my name
My name is Mark
Mark is Embedded engineer
在shell.txt中筛选出既包含Embedded,又包含engineer的行
#grep Embedded shell.txt | grep engineer
Mark is Embedded engineer
在shell.txt中筛选出包含Mark或者aa的行
#grep -e ‘Mark’ -e ‘aa’ shell.txt
aa bb cc dd
Mark is my name
My name is Mark
Mark is Embedded engineer
多文件查询,在a.txt b.txt c.txt中查找Mark
#grep Mark a.txt b.txt c.txt
显示匹配行前2行
#grep Mark shell.txt -A2
显示匹配行后2行
#grep Mark shell.txt -B2
显示匹配行前后2行
#grep Mark shell.txt -C2
不区分大小写:
#grep -i aa shell.txt
aa bb cc dd
AA is a test
查找不包含aa的行:
#grep -v aa shell.txt
查看包括Mark的行数:
#grep -c Mark shell.txt
遍历当前目录及所有子目录查找匹配Mark的行
#grep -r Mark . 添加-n可以打印行号:grep -nr Mark .
在当前目录及所有子目录查找所有txt文件中查找Mark
#grep -r Mark . --include “*.txt”
查找并输出到指定文件
#grep Mark shell.txt > Mark.txt
查找以Mark开头的行
#grep ^Mark shell.txt
显示/etc/passwd文件中以bash结尾的行
#grep “bash$” /etc/passwd