grep 命令使用技巧

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
10
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行内容
-C n :额外打印匹配文本前后n行内容grep -ABC

9. -l(搜索多个文件并查找匹配文本在哪些文件中)

$ grep -l pattern file1 file2
该命令的输出为包含 pattern 的文件名
同时可以使用 -r 选项对目录进行递归搜索
$ grep -r pattern dir
grep -l -r