grep(globally search a regular expression and print)是一个强大的文本搜索工具。常常出现在管道符(|)身后,对大段的文本输出进行过滤,打印出与特定模式相匹配的内容。
1. 基本用法
$ grep pattern filename
或 $ cat filename | grep pattern
或 $ grep pattern file1 file2 …(搜索多个文件)
示例文件(numbers.txt):1
2
3
4
5
6
7
8
9
101 1 1 1 1 1
2 2 2 2 2 2
3 3 3 3 3 3
4 4 4 4 4 4
5 5 5 5 5 5
six six six
seven seven seven
eight eight eight
nine nine nine
10 10 10 10
命令输出:
2. -v(打印 不包含 匹配项的行)
其中 -E 选项表示开启扩展正则表达式(grep -E 等同于 egrep)
添加上 -v 选项后输出的是不匹配的内容
3. -o(只输出匹配项而不是默认的整行内容)
4. -c(统计包含匹配项的行数)
如$ grep 1 numbers.txt
输出为 2,(即第一行 1 1 1 1 1 1 1 和最后一行 10 10 10 10,计算的是行数)
5. -n(打印输出时额外显示行号)
6. -i (搜索时忽略匹配模式中的大小写)
grep 默认是大小写敏感的,加 -i 选项可以在匹配时不区分大小写。
7. -e(多个匹配模式)
注意格式
8. 打印匹配文本之前或之后的内容
-A n :额外打印匹配文本之后n行内容
-B n :额外打印匹配文本之前n行内容
-C n :额外打印匹配文本前后n行内容
9. -l(搜索多个文件并查找匹配文本在哪些文件中)
$ grep -l pattern file1 file2 …
该命令的输出为包含 pattern 的文件名
同时可以使用 -r 选项对目录进行递归搜索
$ grep -r pattern dir