grep 是 linux 精准文本搜索 工具 ,核心用法包括:引号保护特殊字符、- i 忽略大小写、- w 全词匹配、-r 递归 查找、- n 显示行号、- C 显示上下文、- o 仅输出匹配项、- v 反向筛选、- F 加速固定 字符串 搜索。

Linux 文本搜索的核心就是 grep 命令——它不是“搜着试试看”的 工具,而是可预测、可组合、可嵌入脚本的精准过滤器。掌握几个关键用法,能直接把查找耗时从手动翻页降到秒级输出。
基础查找别漏引号和大小写
模式里有空格或特殊字符,必须用单引号或双引号包住,否则 shell 会误拆分。比如搜 user name,得写 grep 'user name' config.txt,而不是 grep user name config.txt(后者会被当成三个参数,报错或查错内容)。
默认区分大小写,查 Error 就不会匹配 error 或 ERROR。加 -i 一键解决:
-
grep -i 'error' /var/log/syslog—— 忽略大小写找所有错误标识 -
grep -w 'root' /etc/passwd——-w确保只匹配完整单词root,不匹配rooter或subroot
快速定位文件和行号
不知道目标在哪?用 -r 递归扫目录;想跳过二进制文件避免乱码?加 --binary-files=without-match 或直接用 --text。
找到文件后,立刻加 -n 看行号,配合编辑器(如 vim + 行号)直接跳转:
-
grep -rn 'timeout=30' /etc/nginx/—— 找所有含该配置的文件 + 行号 -
grep -rl 'TODO' src/—— 只列出含TODO的文件名,不显示内容,适合批量清理
上下文和精准匹配更省力
单看一行常不够判断语境。用 -C 2 显示匹配行及前后各 2 行,相当于自带“阅读上下文”:
-
grep -C 1 'panic' dmesg.log—— 查内核 panic 时,连带看前因后果 -
grep -oE '[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}' access.log——-o只输出匹配部分,-E启用扩展正则,精准抽 IP -
grep -v '^#' nginx.conf | grep -v '^$'—— 先用-v排除注释行和空行,再筛有效配置
提速技巧:固定字符串优先用 -F
如果只是搜纯文本(比如日志里的固定错误码 ERR_5003),不用正则功能,加 -F 能显著加快速度,尤其在大文件中:
-
grep -F 'ERR_5003' app.log比grep 'ERR_5003' app.log更快,因为跳过了正则解析开销 - 配合
-c统计次数:grep -Fc 'failed' *.log—— 一秒出各日志失败总条数
基本上就这些。不用死记所有参数,先熟用 -i、-r、-n、-v、-C 这五个,再按需加 -w、-o、-F,文本处理效率就能稳稳提上来。