grep 是对文本进行过滤的工具,用来查找文本,grep 以 行 为单位;grep 的主要作用就是与 管道符 以及 正则表达式 结合使用;
在 linux 三剑客的使用过程中,管道符 和 正则表达式 特别重要!!
前面的文章提到过,由管道符给过来的数据 是 标准输入,所以 grep 支持从标准输入 或者 命令行 来获取参数,例如 cat a.txt | grep 'hello' 与 grep 'hello' a.txt 都是可以的;
grep 格式:
grep 功能参数(可以有多个参数) '正则表达式(匹配文本)' 文件
或者
.... | grep 功能参数(可以有多个参数) '正则表达式(匹配文本)'
grep 常用功能参数:
功能参数 | 解释说明 |
-c | 输出匹配到的行数,等同于 wc -l |
-n | 显示匹配行以及行号 |
-i | 正则表达式忽略大小写 |
-r | 递归查找,一般查找目录是都会加上 |
-A | 匹配行的后几行 |
-B | 匹配行的前几行 |
-v | 显示不包含匹配文本的行,相当于取反 |
-l | 查询多文件时只输出包含匹配文本的文件名 |
-h | 查询多文件时不显示文件名 |
-s | 不显示文件不存在或者无匹配文本时的错误信息 |
-o | 只显示查找到的内容,grep 默认显示整行 |
来看例子:
1.统计匹配到 匹配文本 的行数,使用 -c 参数
grep -c 等效于 wc-l ,如下:
2.使用正则表达式是忽略大小写,使用 -i 参数
3.过滤多个文件时,只显示包含匹配文本的文件的文件名,使用 -l 参数
4. 过滤多个文件时,不显示包含匹配文本的文件名,只显示匹配行,使用 -h 参数
5. 显示匹配文本所在的行号,使用 -n 参数
6. 当过滤的文件不存在时,要想不报错,使用 -s 参数
7. 显示文件中不包含匹配文本的行,使用 -v 参数
8. 显示匹配行的前几行或者后几行,使用 -A 或者 -B 参数
9. 只显示查找到的内容, 使用 -o 参数