文件内容搜索利器 - grep
Linux grep
命令用于查找文件里符合条件的字符串。
官方定义为:
grep
,egrep
,fgrep
- print lines matching a pattern
grep支持正则表达式,是一个强大的文本搜索工具。
语法
语法也挺复杂,因为功能确实很强大。
1 | $ grep [OPTION...] PATTERNS [FILE...] |
常用的参数为:
- -r 或 –recursive : 此参数的效果和指定”-d recurse”参数相同
- -v 或 –invert-match : 显示不包含匹配文本的所有行
- -i 或 –ignore-case : 忽略字符大小写的差别
- -n 或 –line-number : 在显示符合样式的那一行之前,标示出该行的列数编号。
假定有如下3个文件,1个文件夹,内容如下:
1 | a |
默认无参数
在当前目录搜索包含is字符串,可以看到**a/b/c**三个文件均有输出,而d因为是目录,暂时无输出。
1 | $ grep is * |
增加文件夹
与其他命令类似,增加-r
参数,递归搜索
1 | $ grep -r is * |
反向查找
在某些情况下,或许正想找到不包含某些字符串的内容,如下:
1 | $ grep -rv is * |
此时可以看到,不包含is的内容显示了出来。
不区分大小写
而某些情况下,或许我们希望找到不区分大小写的内容,比如对于This/this而言:
1 | $ grep -r This * |
可以看到此时有可能笔误,或者其他原因的b文件已经被找到了。
显示行数,精准定位
如果文件内容比较多,此时显示内容在哪一行,是很重要的,加上-n
参数既可解决。
1 | $ grep -rn This * |