grep 目录级联查找

       在Mac或者Linux下使用grep进行文件内容查找时,如果给定的目标搜索路径是当前目录,那么它默认只搜索当前目录下的文件,而不会搜索其下面子目录中的文件内容,如果想级联搜索下级目录,需要使用一个“-r”参数:

grep -n -r "GET" .

 

上面的命令将会找出当前目录“.”及当前目录中所有下级目录中的文件中包含“GET”关键字的文件,并打印出行号和文件名

 

其中:

-n : 代表输出时打印行号

-r : 代表进行目录递归搜索,即搜索下级所有子目录

 

另外还介绍几个常用的选项:

-I : 大写的“i”,用来忽略所有的二进制文件

-i : 用来进行忽略大小写的匹配,也就是对大小写不敏感

-A : 这个选项可以打印出匹配行之后几行的内容,比如:grep -A 3 "get" test.txt

-B : 这个选项可以打印出匹配行之前几行的内容,比如:   grep -B 3 "get" test.txt

-C : 这个选项可以打印出匹配行之前和之后几行的内容(注意: -C之后的参数要紧挨着中间不留空格),比如:grep -C2 "get" test.txt

 

下面举一个综合的例子:

文件为test.txt,内容如下:

get 1
GET 2
GET 3
GET 4
get 4
post 1
post 2
post 3
post 4
post 5

 

运行命令并查看输出:

运行命令:grep -A 2 -B 2 -i -n "get" test.txt                    
输出结果如下:
1:get 1
2:GET 2
3:GET 3
4:GET 4
5:get 4
6-post 1
7-post 2

运行命令:grep -C2 -i -n "get" test.txt
输出结果如下:
1:get 1
2:GET 2
3:GET 3
4:GET 4
5:get 4
6-post 1
7-post 2

 

 

可以发现两次运行命令的输出结果一致,证明了“-A 2 -B 2”选项等同于"-C2"的事实,同时还发现一个情况,即使每行都有匹配到get,那么-A 2 和 -B 2输出的结果会进行合并,而不是重复输出。

 

 

 

你可能感兴趣的:(grep)