实用科技屋
霓虹主题四 · 更硬核的阅读氛围

用bash命令快速搜索文本,效率翻倍

发布时间:2026-01-02 19:40:22 阅读:339 次

在日常使用Linux或macOS系统时,经常需要从一堆文件里找出包含特定内容的行。比如你写了一堆日志文件,想看看有没有报错信息,或者想找某个配置项写在哪行。这时候打开编辑器一个一个翻太慢了,直接用bash命令搜索文本才是正道。

最常用的:grep命令

grep是文本搜索的主力工具。比如你想在当前目录下的所有.log文件中查找包含“error”的行,可以直接运行:

grep error *.log

它会把每个匹配的行都打印出来,前面带上文件名,一目了然。

忽略大小写?加上-i参数

有时候你不确定是Error、error还是ERROR,可以加个-i让它不区分大小写:

grep -i error system.log

这样所有变体都能搜到。

递归搜索整个目录

如果想在整个项目目录里找某个函数调用,比如print_debug,可以用-r参数递归搜索:

grep -r print_debug /home/user/project/

它会深入每个子目录,把所有匹配的文件和行都列出来。

只看匹配了多少行?用-c统计

有时候你并不关心具体内容,只想知道某个关键词出现了多少次。比如统计日志里“timeout”出现的次数:

grep -c timeout access.log

输出就是一个数字,干净利落。

反向搜索:排除某些内容

你想看日志里除了正常状态以外的其他请求,可以用-v排除掉“200 OK”:

grep -v "200 OK" access.log

这样所有非成功响应都会被保留下来,方便排查问题。

配合其他命令使用

grep常和其他命令组合。比如查看进程时排除掉grep自己:

ps aux | grep nginx | grep -v grep

或者列出所有以字母开头的行:

cat config.txt | grep ^[a-zA-Z]

这里的^表示行首,[a-zA-Z]代表任意字母。

别忘了正则表达式

grep支持基础正则,比如你要找邮箱格式的内容:

grep -E \b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b data.txt

-E启用扩展正则,能更灵活地匹配复杂模式。

掌握这些bash命令搜索文本的技巧,处理日志、代码、配置文件都快得多。不用点开十几个文件手动翻,一条命令搞定,省下的时间喝杯咖啡不香吗?