grep(globally search a regular expression and print)是一个强大的文本搜索工具。常常出现在管道符(|)身后,对大段的文本输出进行过滤,打印出与特定模式相匹配的内容。
1. 基本用法
$ grep pattern filename
或 $ cat filename | grep pattern
或 $ grep pattern file1 file2 ...(搜索多个文件)
示例文件(numbers.txt):
1 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
命令输出:
grep
2. -v(打印 不包含 匹配项的行)

grep -v
其中 -E 选项表示开启扩展正则表达式(grep -E 等同于 egrep)
添加上 -v 选项后输出的是不匹配的内容
3. -o(只输出匹配项而不是默认的整行内容)

grep -o
4. -c(统计包含匹配项的行数)
如$ grep 1 numbers.txt
输出为 2,(即第一行 1 1 1 1 1 1 1 和最后一行 10 10 10 10,计算的是行数)
5. -n(打印输出时额外显示行号)

grep -n
6. -i (搜索时忽略匹配模式中的大小写)

grep -i
grep 默认是大小写敏感的,加 -i 选项可以在匹配时不区分大小写。
7. -e(多个匹配模式)

grep -e
注意格式
8. 打印匹配文本之前或之后的内容
-A n :额外打印匹配文本之后n行内容
-B n :额外打印匹配文本之前n行内容

grep -ABC
9. -l(搜索多个文件并查找匹配文本在哪些文件中)
$ grep -l pattern file1 file2 ...
该命令的输出为包含 pattern 的文件名
同时可以使用 -r 选项对目录进行递归搜索
$ grep -r pattern dir

grep -l -r