当前位置:首页>Linux>Linux新手必会的10个grep命令,查日志再也不用翻到眼瞎

Linux新手必会的10个grep命令,查日志再也不用翻到眼瞎

  • 2026-10-11 07:36:16
Linux新手必会的10个grep命令,查日志再也不用翻到眼瞎

查日志再也不用翻到眼瞎

上一期讲了 Vim,有人说"我连退出都不会"(别慌,:wq 救命)。

这一期聊聊另一个每天都在用、但很多人只会最基础用法的命令——grep。

一句话说白了:grep 就是"在一堆文字里帮你找你要的那行"。

查日志、筛配置、排查故障……运维的日常就是跟文本打交道。不会 grep,等于瞎子摸象。

1. 最基础:在文件里找关键词

grep "error" /var/log/syslog

在 syslog 里找包含 error 的每一行。简单粗暴。

2. 忽略大小写:-i

日志里的 Error、ERROR、error 都想捞出来?

grep -i "error" /var/log/syslog

-i = ignore case,大小写通吃。

3. 显示行号:-n

找到了错误,想知道是第几行?

grep -n "error" /var/log/syslog

输出会带行号,比如 1234:Jun 1 10:23:45 server kernel: error,前面那个 1234 就是行号。

4. 反向匹配:-v

想排除掉某些行?比如看日志但不想看到 INFO 级别的:

grep -v "INFO" /var/log/app.log

-v = invert,反着来。想排除多个关键词:

grep -v -e "INFO" -e "DEBUG" /var/log/app.log

5. 递归搜索整个目录:-r

想找某个配置在哪个文件里?

grep -r "max_connections" /etc/mysql/

-r = recursive,递归搜目录下所有文件。加 -l 只显示文件名:

grep -rl "max_connections" /etc/mysql/

6. 正则表达式:-E

想匹配更复杂的模式?比如找所有以数字开头的行:

grep -E "^[0-9]" /etc/passwd

-E = extended regex,支持扩展正则。常用场景:

# 找 IP 地址
grep -E "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+" /var/log/auth.log

# 找 5xx 错误
grep -E " 5[0-9]{2} " /var/log/nginx/access.log

7. 显示匹配的上下文:-A / -B / -C

光看一行不过瘾?想看前后几行的上下文?

# 显示匹配行 + 后面 5 行
grep -A 5 "Exception" /var/log/app.log

# 显示匹配行 + 前面 5 行
grep -B 5 "Exception" /var/log/app.log

# 显示匹配行 + 前后各 3 行
grep -C 3 "Exception" /var/log/app.log

排查报错时特别有用,能看到报错前发生了什么。

8. 统计匹配次数:-c

想知道某个错误出现了多少次?

grep -c "404" /var/log/nginx/access.log

输出一个数字,比如 237。比 grep ... | wc -l 更方便。

9. 管道组合:grep + 其他命令

grep 真正好用的地方在于它能跟其他命令串起来:

# 看进程
ps aux | grep nginx

# 看端口
ss -tlnp | grep 8080

# 看磁盘使用率超过 80% 的分区
df -h | grep -E "8[0-9]%|9[0-9]%|100%"

# 多级过滤:找非本地的失败登录
cat /var/log/auth.log | grep "Failed" | grep -v "127.0.0.1"

管道 | 把前一个命令的输出喂给 grep,用熟了你会发现,Linux 的命令都是这么一个个串起来的。

10. 实时监控:配合 tail -f

想实时看日志里有没有新的错误?

tail -f /var/log/nginx/error.log | grep --line-buffered "500"

--line-buffered 很重要,不然 grep 会缓冲输出,你看到的不是实时的。

速查表

场景 命令
找关键词 grep "keyword" file
忽略大小写 grep -i "keyword" file
显示行号 grep -n "keyword" file
排除某行 grep -v "keyword" file
递归搜索目录 grep -r "keyword" /path/
只显示文件名 grep -rl "keyword" /path/
正则匹配 grep -E "pattern" file
看上下文 grep -C 3 "keyword" file
统计次数 grep -c "keyword" file
实时监控 tail -f file | grep --line-buffered "keyword"

一句话总结

说真的,不会 grep 的运维,查日志只能靠肉眼翻;会了 grep,一行命令搞定。这玩意儿不难,但用熟了真的能省很多时间。

下期预告:awk —— 比 Excel 更好用的文本处理神器

—— 三页札记 ——

关注我,每周分享 Linux 运维实战技巧

最新文章

随机文章