news 2026/11/4 2:10:39

Mac 当主机,Linux 当服务器(23)grep 实战——在 10 万行日志里找一根针

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Mac 当主机,Linux 当服务器(23)grep 实战——在 10 万行日志里找一根针

摘要:grep是日志分析的第一把刀,但很多人只会grep 关键词,结果一屏刷几千行、想统计又数不出来。这篇把grep讲透:-c统计、-n定位、-v排除、-i忽略大小写、-E扩展正则、-A/-B/-C看上下文、-f从文件读模式;再给三条实战管道(404 统计、IP 过滤、/posts/访问量),以及「结果太多怎么逐步缩小范围」的四步法。核心只有一句话:grep是筛子,不是计算器。

承接上篇:日志分析的三层次「看 → 筛 → 析」和grep/awk/sed的分工讲清了。


一、老周的「针」和「海」

早上到工位,老周丢给小林一个任务:

「你练的那份access.log,现在多少行?」

sudowc-l/var/log/nginx/access.log

输出:

102347 /var/log/nginx/access.log

「10 万行。」小林说。

「现在,你从这 10 万行里,找出所有状态码 500 的请求,统计有多少条,列出前 5 个 URL。」

小林打开grep手册,准备逐条查参数。

老周拦住他:「别查手册。手册是字典,不是教材。你直接上手,遇到问题再查。」

「那我怎么写?」

「你想想,你要什么。」

「我要 500 的请求。」

「那你就grep " 500 "。」

sudogrep" 500 "/var/log/nginx/access.log

终端刷了一屏,还在继续。

「停。」老周说,「你Ctrl+C。」

小林按了Ctrl+C。

「你犯了两个错。」老周说,「第一,你没统计数量,直接刷屏。第二,你没想清楚grep到底怎么用。今天,我就把grep给你讲透。」


二、grep的基本逻辑:按行匹配

「grep的逻辑非常简单。你给它一个模式,它逐行扫描,把匹配的行打印出来。」

grep"模式"文件

「它会输出所有包含500的行。注意,前后有空格。」

「为什么加空格?」

「因为500可能出现在 IP 里、响应大小里、时间戳里。加空格,是为了把匹配限定在状态码那一段。」老周说,「但这不是最严谨的——最严谨的是awk '$9 == 500'。」

「那grep还有啥用?」

「grep适合快速过滤文本。比如你找某个 IP、某个 URL、某个关键词。」老周说,「grep是『筛子』,不是『计算器』。你用它筛出你关心的行,再用awk去算。」

小林记下:

  • grep "模式" 文件:按行匹配;
  • 加空格是为了精确匹配字段;
  • grep负责筛,awk负责算。

三、grep常用参数:一个一个试

-c:只统计数量

「你刚才刷屏,就是因为没加-c。」

sudogrep-c" 500 "/var/log/nginx/access.log

输出:

500

「500 条 500 请求。」小林说。

「-c只输出匹配行数,不输出内容。你以后统计数量,第一反应就是-c。」

-n:显示行号

「你想知道 500 请求在第几行。」

sudogrep-n" 500 "/var/log/nginx/access.log|head-5

输出:

1234:192.168.1.100 - - [14/Sep/2026:10:00:03 +0800] "GET /api/health HTTP/1.1" 500 153 "-" "curl/7.81.0" 5678:192.168.1.101 - - [14/Sep/2026:10:05:12 +0800] "POST /api/login HTTP/1.1" 500 200 "-" "curl/7.81.0" ...

「行号在冒号前面。」老周说,「你以后定位问题,用-n找到行号,再用sed -n '行号p'看上下文。」

-v:反向匹配

「你想排除某些行。」

sudo
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/11/4 2:10:38

【AI智能体】Langchain 自定义中间件使用实战操作详解

目录 一、前言 二、Langchain 自定义中间件介绍 2.1 为什么需要自定义中间件 2.2 自定义中间件优势 2.3 hook函数(钩子函数) 介绍 2.3.1 钩子函数特点 2.3.2 LangChain的hook函数分类 三、自定义中间件使用 3.1 Node-style hooks 函数用法 3.1.1 基于装饰器的实现 3.…

作者头像 李华
网站建设 2026/11/4 2:10:37

Folia 安装教程:零门槛到歌词动画播放器跑起来

Folia 安装教程:零门槛到歌词动画播放器跑起来 【免费下载链接】folia-major 专注于绚丽的歌词动画效果的本地音乐/navidrome/第三方多平台在线音乐播放器 项目地址: https://gitcode.com/GitHub_Trending/fo/folia-major Folia 是一款把歌词渲染成全屏动画的…

作者头像 李华
网站建设 2026/11/4 2:10:28

【零基础学AI】第 23 章课后练习与答案

第 23 章练习与答案 先完成题目,再看答案。代码从章节目录运行,使用已安装本章依赖的 Python。 🌈 关于《AI 零基础 36 讲》课后训练 📚 与正式讲解配套学习 本篇是《AI 零基础 36 讲》的配套课后训练,与对应章节的正…

作者头像 李华
网站建设 2026/11/4 2:07:38

6. 机器学习与特征

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/11/4 2:07:21

PS4 模拟器 PC 实战:15 分钟跑起血源诅咒

PS4 模拟器 PC 实战:15 分钟跑起血源诅咒 【免费下载链接】shadPS4 PlayStation 4 emulator for Windows, Linux, macOS and FreeBSD written in C 项目地址: https://gitcode.com/GitHub_Trending/sh/shadPS4 《血源诅咒》在 PC 上 60 帧这件事,…

作者头像 李华