当前位置:首页>Linux>查找文本只会Ctrl+F?这个Linux神器真的太好用了吧!

查找文本只会Ctrl+F?这个Linux神器真的太好用了吧!

  • 2026-09-05 17:43:30
查找文本只会Ctrl+F?这个Linux神器真的太好用了吧!
居然还有这么顺手的文本查找工具
summer

你有没有对着满屏的日志找报错信息,翻得眼睛都酸了还是找不到想要的内容?你有没有对着几G大的日志文件,打开都要等十分钟,更别说查找关键词了?

grep就是专门解决这个问题的Linux神器,只要一行命令,几秒钟就能从成百上千行文本里精准揪出你想要的内容。

用过的人都会惊叹,原来找文本还能这么快。

最基础的用法就能解决80%的问题
summer

刚接触Linux的朋友也不用怕,grep的基础用法简单到离谱,根本不需要记复杂的参数。

最简单的场景就是,你想从一个文本文件里找某个关键词,直接敲 grep 关键词 文件名 就搞定。比如你想从nginx的访问日志里找所有访问过首页的请求,直接输 grep "index.html" /var/log/nginx/access.log,屏幕上立马就会输出所有符合要求的行,根本不用打开文件慢慢翻。

如果你的关键词里有空格或者特殊符号,记得给关键词加上双引号,就不会报错了。很多新手刚用的时候忽略这一点,折腾半天才发现是引号的问题。

要是你不想只看到符合要求的行,还想看看关键词前后几行的内容,方便你上下文联系找问题怎么办?加个参数就行。-Cn参数直接显示关键词前后n行,比如你想看前后3行,就输 grep -C3 "报错" app.log,前后内容一起给你展示出来,排查问题太方便了。

你还可以只看关键词前面或者后面的内容,用-An就是只显示后面n行,-Bn就是只显示前面n行,根据你的需求选就行,灵活得很。

这些进阶玩法让效率直接翻倍
summer

grep的好用,远不止找关键词这么简单。

你有没有遇到过,想要找不包含这个关键词的所有行?比如你想过滤掉所有日志里的静态资源请求,只看接口请求,直接加个-v参数就搞定,grep -v ".css" access.log,一下子就把所有包含.css的行都剔除了,剩下的就是你想要的内容。

这个功能用来过滤无用信息真的太香了,我平时排查问题,第一步就是用-v把一堆没用的警告信息去掉,整个日志瞬间清爽。

如果要找的关键词不区分大小写呢?比如你既想找"Error"也想找"error",不用分两次搜,加个-i参数,grep直接忽略大小写,一次就能把所有符合的结果都找出来。

想要统计一下一共有多少行符合条件,不用你自己数,加个-c参数,grep直接把行数给你输出出来。比如想看看今天一共有多少个404请求,grep -c "404" access.log,数字直接出来,省得你自己去数。

如果你的关键词不太固定,想要用正则表达式匹配怎么办?grep支持正则啊,用-E参数就能开启扩展正则表达式,不管你是匹配手机号、邮箱还是IP地址,都能轻松搞定。

比如你想从文本里找出所有的11位手机号,直接输 grep -E "1[3-9][0-9]{9}" text.txt,所有手机号直接给你筛出来,比手动找快几百倍。

很多人不知道,grep还能递归查找整个目录里的所有文件。比如你记得项目里有一行写了"test secret",但是忘了在哪个文件里,直接到项目根目录下敲 grep -r "test secret" .,grep会自动遍历当前目录下所有的文件,把每个符合条件的文件和行号都给你列出来,几秒钟就能找到,不用你一个文件一个文件打开找。

而且它还会自动跳过二进制文件,不会给你输出一堆乱码,这点真的很贴心。

搭配其他命令用,直接解锁更多玩法
summer

grep最强大的地方,就是能和Linux其他命令搭配,组合出无数种玩法。

比如你想看看当前系统里有没有某个进程在运行,直接ps aux | grep "nginx",一下子就能看到所有nginx相关的进程,有没有启动一目了然。很多运维同学排查问题,第一句命令就是这个,简直是百试百灵。

你还可以接着再搭配awk或者wc,统计一下一共有多少个进程,或者提取出进程ID直接杀掉,一套操作下来行云流水,比你打开任务管理器点来点去快多了。

再比如你想看看某个日志文件里,今天的请求里有多少个是来自某个IP的,直接 cat app.log | grep "192.168.1.1" | wc -l,结果直接出来,全程不用一分钟。

要是你想把找出来的结果保存到新文件里,方便后面分析,直接加个重定向就行,grep "报错" app.log > error.log,所有报错就都存到新文件里了,想什么时候看就什么时候看。

很多人说Linux命令就是积木,grep就是那块最常用的万能积木,不管你想做什么文本处理,几乎都能插进去用上它,用熟了你会发现,离开它真的不行。

这些小细节别忽略,少踩很多坑
summer

用grep的时候,有几个小细节很多人都踩过坑,记下来能帮你少浪费时间。

第一个,如果你查找的关键词里有横杠开头,比如你要找"-test",grep会把它当成参数解析,直接报错。这时候你只要加上--参数告诉grep后面的都是关键词,就没问题了,写成grep -- "-test" 文件名就可以正常运行。

第二个,递归查找的时候,如果想要排除某个不需要搜索的目录,比如node_modules或者.git,可以加--exclude-dir参数,比如grep -r "func" . --exclude-dir=node_modules,就不会去遍历node_modules里的几千个文件了,速度快很多。

第三个,如果你想让搜索结果里显示行号,方便你打开文件直接定位,加个-n参数就行,grep会在每一行结果前面加上行号,找的时候直接跳转到对应行,不用自己再数,太省时间了。

其实grep的参数还有很多,但是我们平时常用的就这么十几个,把这些用熟了,就足够解决工作里99%的文本处理问题了。

很多新手觉得Linux命令难记,其实根本不用死记硬背,用得多了自然就记住了。每次遇到问题的时候敲一遍,用个三五次,参数就刻在脑子里了。

你用过grep哪些好用的玩法?欢迎在评论区聊一聊。

最新文章

随机文章