grep 是最直接可控的文本检索工具,支持单文件/多文件搜索、递归查找、行号显示(-n)、忽略大小写(-i)、反向匹配(-v)、上下文显示(-c)、统计数量(-c)及高亮关键词(--color)等实用功能。

直接用 grep "关键词" 文件名 就能查。比如 grep "ERROR" /var/log/syslog,它会把所有含 ERROR 的行打印出来。
在单个文件里找关键词
最基础的用法,适合你已经知道目标文件在哪:
- 字符串带空格或特殊符号时,务必用引号包住,比如
grep "user not found" auth.log - 不加引号也能运行,但遇到
*、$、空格等容易被 shell 错误解析 - 如果只关心有没有匹配,加
-q(quiet 模式),常用于脚本判断:if grep -q "timeout" app.log; then echo "超时了"; fi
在多个文件里同时搜索
不用一个个打开,用通配符或指定多个文件名:
在无 root/sudo 权限的环境(云容器、VPS、隔离主机)中安装并配置 OpenClaw 浏览器工具的 headless Chrome。适用场景:...
- 查当前目录下所有 .log 文件:
grep "failed" *.log - 查指定几个文件:
grep "config" app.conf nginx.conf - 想只显示匹配的文件名(不显示内容),加
-l:grep -l "debug" *.php - 想排除某些文件,可用
--exclude,比如跳过压缩包:grep -r "TODO" . --exclude="*.zip"
让结果更实用的常用选项
光看到匹配行还不够?这些选项能帮你快速定位和分析:
-
-n:显示行号,方便编辑时跳转,grep -n "return" main.c -
-i:忽略大小写,grep -i "warning" system.log -
-v:反向查找,即“不包含”的行,grep -v "^#" config.ini可过滤注释行 -
-C 2:显示匹配行及前后各 2 行,看上下文很关键,尤其查日志时 -
-c:只统计数量,不输出内容,grep -c "404" access.log
进阶:递归搜索整个目录
不知道关键词在哪个子文件里?用 -r(或 -R):
-
grep -r "database_url" ./src/—— 在 src 目录及其所有子目录中搜索 - 加上
--include可限定文件类型,比如只搜 Python 文件:grep -r --include="*.py" "import requests" . - 加
--color=always让关键词高亮(终端支持时),一眼就能抓住重点
grep 不是万能的,但它是最直接、最可控的内容检索工具。理解它只读内容、不认文件名这个本质,就不会把它和 find 混用。实际排障时,往往先用 find 找出一批候选文件,再用 grep 精准挖出关键词所在行。










