在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输出的结果会进行合并,而不是重复输出。
相关推荐
- `mkdir`: 创建目录,`mkdir -p`可以级联创建多级目录。 - `rmdir`: 删除空目录。 - `rm`: 删除文件或目录,`-f`强制删除,`-r`递归删除整个目录。 4. **文件操作** - `touch`: 创建新文件或更新已有文件的...
- `mkdir`:创建目录,`mkdir -p`支持级联创建多级目录。 - `rmdir`:删除空目录。 3. **文件操作** - `rm`:删除文件或目录,`-f`强制删除,`-r`递归删除目录。 - `cp`:复制文件或目录,`-r`用于递归复制...
4. **mkdir**:`mkdir`用于创建新目录,加上`-p`参数可以级联创建多级目录。 5. **rmdir**:`rmdir`用于删除空目录。如果需要删除非空目录,可以使用`rm -fr`,其中`-f`表示强制删除,`-r`表示递归删除。 6. **ln*...
查找文件或目录可使用`find`命令,而`grep`命令用于在文件内容中搜索指定字符或字符串。例如,`grep -A 5 'searchtext' filename`会在`filename`中搜索含有`searchtext`的行,并显示该行之后的5行内容。 系统管理...
fif是一个Shell实用程序,可以使用模糊搜索和带有周围上下文的突出显示语法的预览来快速查找文件中的文本。 要求 版本或更高版本。 可选的 级联 对于文件级联,可选地需要或 ,并且如果不存在,fif将退回到grep 。 ...