grep是Linux中最常用高效的文本搜索工具,支持正则匹配、上下文显示、递归搜索、大小写忽略(-i)、反向过滤(-v)、整词匹配(-w)、行号显示(-n)及高亮(--color)等核心功能。

Linux里找文本,grep是最常用也最高效的工具。它不只支持简单关键字匹配,还能配合正则、上下文、文件遍历等能力完成复杂搜索任务。掌握几个关键选项和组合用法,就能覆盖90%的日常需求。
基础匹配:精准定位关键词
最常用的写法是 grep "关键词" 文件名。注意默认区分大小写,想忽略大小写就加 -i 选项:
- grep -i "error" /var/log/syslog —— 查所有含 error(大小写不限)的日志行
- grep "^Failed" auth.log —— 用 ^ 匹配行首,查以 Failed 开头的登录失败记录
- grep "password\|user" config.txt —— 用 \| 表示“或”,一次搜多个词(需加反斜杠转义)
进阶筛选:排除干扰、聚焦重点
实际使用中常要跳过不相关的内容。用 -v 可反向过滤,-w 确保整词匹配,避免子串误中:
- grep -v "#" nginx.conf —— 排除所有以 # 开头的注释行
- grep -w "root" /etc/passwd —— 只匹配独立单词 root,不会把 administrator 或 rooter 也带上
- grep -v "^$" /tmp/data.txt —— 排除空行(^$ 表示开头紧接着结尾)
批量处理:跨目录、多文件高效搜索
单个文件不够用?加上 -r(递归)和 --include 就能精准扫目录:
- grep -r --include="*.py" "print(" ./src/ —— 只在 src 目录下所有 .py 文件里搜 print(
- grep -rn "TODO" . —— -n 显示行号,-r 遍历当前目录,快速定位待办项位置
- grep -r "timeout" /etc/ 2>/dev/null —— 加 2>/dev/null 屏蔽权限错误提示,让结果更干净
增强可读性:显示上下文与高亮
光看一行可能看不懂上下文。用 -A(after)、-B(before)、-C(context)追加前后几行;--color=always 让关键词高亮:
- grep -C 2 "Connection refused" app.log —— 每个匹配行前后各显示 2 行,方便看错误前后的操作
- grep --color=always -n "warning" *.log | less -R —— 高亮 + 行号 + 分页查看,less 要加 -R 才能识别颜色
- alias lg='grep --color=always -n' —— 写进 ~/.bashrc,自定义快捷命令提升效率
grep 的能力远不止“找文字”,它是 Linux 文本处理链路的起点。搭配管道(|)还能和 sed、awk、sort 等工具联动,实现从搜索到清洗、统计、提取的一站式操作。用熟了,很多看似复杂的日志分析、配置检查、代码审计,三两行命令就能搞定。









