玩 Linux 离不开文本检索,而 grep 就是系统自带、最实用的终端搜索工具。全称 Global Regular Expression Print,简单理解就是:从文件或命令输出中,精准筛选出你想要的内容。
Ubuntu 26.04 默认自带 grep,开箱即用。不管是排查系统报错、分析登录日志、查找配置参数,还是过滤端口、进程信息,grep 都是日常运维最高频、最刚需的命令。
这篇文章我结合 Ubuntu 26.04 真实使用场景,整理一套新手也能直接抄走即用的 grep 实战用法,从基础搜索到正则、递归检索、日志排错全覆盖。
一、grep 基础语法(最简单记忆方式)
grep 的结构非常固定,记住这一行就够用:
grep [参数] 搜索关键词 目标文件
如果不指定文件,可以搭配管道 | 过滤其他命令的输出,这也是工作中最常用的方式。
二、最常用基础用法(日常 90% 场景够用)
1. 基础搜索:查找包含指定关键词的行
最经典场景:查看服务器 SSH 成功登录记录:
grep 'Accepted' /var/log/auth.log
系统会直接输出所有登录成功的日志,包含时间、IP、端口、登录方式。
2. 关键词高亮显示
远程 SSH 连接时,默认不会标红关键词,加上参数强制高亮,阅读更清晰:
grep --color=always 'Accepted' /var/log/auth.log
想要永久高亮,可以设置别名:
echo "alias grep='grep --color=always'" >> ~/.bashrc
source ~/.bashrc
3. 忽略大小写搜索 -i
日志、用户名大小写不固定时,-i 是必备参数,不区分大小写匹配:
grep -i alexander /etc/passwd
4. 显示行号 -n
修改配置文件时,用来定位参数所在行数,方便后续编辑:
grep -in 'ssh' /etc/ssh/sshd_config
5. 精准匹配完整单词 -w
默认 grep 会匹配片段单词,比如搜索cat 会顺带匹配 catalogue。加上 -w 只匹配独立完整单词,避免误匹配:
grep -iw 'cat' test.txt
6. 统计匹配行数 -c
快速统计登录次数、报错次数,不用手动数:
grep -c 'Accepted' /var/log/auth.log
7. 反向过滤 -v(非常实用)
反向匹配,只显示不包含关键词的行。常用于过滤注释、空行、无用日志:
# 过滤掉所有注释行
grep -v '^#' /etc/ssh/sshd_config
# 只查看不含报错的正常日志
grep -iv 'error' /var/log/syslog
三、多关键词 + 正则进阶搜索
1. 同时匹配多个关键词 -E
使用 -E 开启扩展正则,用 | 代表“或”,同时匹配多个内容:
grep -E 'Accepted|Failed' /var/log/auth.log
2. 精准匹配行首、行尾
正则两个最常用锚点:
^ 代表行开头,$ 代表行结尾
# 匹配以 alexander 开头的用户
grep '^alexander' /etc/passwd
# 匹配以 bash 结尾的可登录用户
grep 'bash$' /etc/passwd
四、递归全盘搜索:批量查找文件内容
想要在某个文件夹下,批量查找所有包含关键词的文件,用 -r递归搜索。排查配置、代码、系统文件超级方便。
1. 递归搜索目录
grep -r "password" /etc/
2. 搜索时排除指定目录
避免输出大量无用文件,提升搜索效率:
grep -r "password" /etc --exclude-dir={apparmor.d,pam.d}
3. 只显示匹配的文件名 -l
不需要看内容,只想知道哪些文件包含关键词:
grep -rl "debug" /var/log
五、搭配管道过滤命令输出(最高频工作场景)
grep 最香的用法,就是配合管道过滤其他命令结果,日常排查几乎离不开。
查看指定端口服务:
ss -pnltu | grep -i cups
筛选指定用户登录记录:
grep 'Accepted' /var/log/auth.log | grep cherry
实时监控系统报错:
tail -f /var/log/syslog | grep -i error
六、日志排错神器:查看上下文日志
遇到报错,只看报错行不够,需要看前后日志分析原因:
- -A n:显示匹配行后 n 行
- -B n:显示匹配行前 n 行
- -C n:显示前后各 n 行
grep -C 3 "Failed password" /var/log/auth.log
七、grep 常用参数速查表(收藏即可)
不用死记,工作直接对照:
- -i:忽略大小写
- -n:显示行号
- -w:精准匹配完整单词
- -c:统计匹配行数
- -v:反向过滤,排除匹配内容
- -r:递归搜索目录
- -E:多关键词、正则或匹配
- -l:只输出匹配文件名
- -C/A/B:查看日志上下文
八、Ubuntu 26.04 实战小案例
1. 查看服务器暴力破解 SSH 记录

grep -C 2 "Failed password" /var/log/auth.log
2. 过滤干净配置文件(无注释无空行)
grep -v '^#' /etc/ssh/sshd_config | grep -v '^$'
总结
grep 看似简单,却是 Linux 运维、开发调试的核心工具。在 Ubuntu 26.04 中,掌握 大小写忽略、行号、反向过滤、递归搜索、正则多匹配、日志上下文 这几套用法,基本可以搞定所有文本检索、日志排查场景。
日常不用记复杂正则,优先熟练本文的高频命令,足够满足 99% 的个人和服务器运维需求。