grep一下

作者:J船长日期:2026/1/27

grep 实战指南:把日志过滤一下

grep (_缩写_来自Globally search a Regular Expression and Print)是一种强大的文本搜索工具,它能使用特定模式匹配(包括正则表达式)搜索文本,并默认输出匹配行。


0. 准备:创建示例日志文件

在终端执行:

1nano test.log
2

粘贴下面内容:

12026-01-27 10:01:12 INFO  App started
22026-01-27 10:01:15 INFO  User login success userId=123
32026-01-27 10:02:01 WARN  VIDEO_BLUR enabled for low bandwidth
42026-01-27 10:02:05 ERROR Network REJECT_TIMEOUT while calling API
52026-01-27 10:02:07 DEBUG psi-p packet received size=512
62026-01-27 10:02:10 INFO  Request finished traceId=abc
72026-01-27 10:03:00 ERROR Payment failed orderId=998
82026-01-27 10:03:10 INFO  App closed
9

保存退出:Ctrl + O → 回车 → Ctrl + X

查看文件:

1cat test.log
2

1. 单关键词过滤(忽略大小写)

命令

1grep -i error test.log
2

实际输出

12026-01-27 10:02:05 ERROR Network REJECT_TIMEOUT while calling API
22026-01-27 10:03:00 ERROR Payment failed orderId=998
3

解释

  • grep:搜索工具
  • error:关键词
  • -i:忽略大小写(error / ERROR 都匹配)

2. 多关键词 OR(error 或 timeout 或 fail)

命令

1grep -E -i "error|timeout|fail" test.log
2

实际输出

12026-01-27 10:02:05 ERROR Network REJECT_TIMEOUT while calling API
22026-01-27 10:03:00 ERROR Payment failed orderId=998
3

(第一行包含 timeout,第二行包含 fail)

解释

  • -E:启用扩展正则,支持 A|B|C
  • |:或(OR)
  • -i:忽略大小写

3. 指定你原始的 3 个关键词

命令

1grep -E -i "REJECT_TIMEOUT|VIDEO_BLUR|psi-p" test.log
2

实际输出

12026-01-27 10:02:01 WARN  VIDEO_BLUR enabled for low bandwidth
22026-01-27 10:02:05 ERROR Network REJECT_TIMEOUT while calling API
32026-01-27 10:02:07 DEBUG psi-p packet received size=512
4

4. 多条件 AND(同时包含 error 和 timeout)

命令

1grep -i error test.log | grep -i timeout
2

实际输出

12026-01-27 10:02:05 ERROR Network REJECT_TIMEOUT while calling API
2

解释

两次过滤:

  1. 先找 error
  2. 再从结果里找 timeout

5. 显示行号

命令

1grep -n -i error test.log
2

实际输出

14:2026-01-27 10:02:05 ERROR Network REJECT_TIMEOUT while calling API
27:2026-01-27 10:03:00 ERROR Payment failed orderId=998
3

6. 查看上下文(前后各 2 行)

命令

1grep -n -C 2 -i "REJECT_TIMEOUT" test.log
2

实际输出

12-2026-01-27 10:01:15 INFO  User login success userId=123
23-2026-01-27 10:02:01 WARN  VIDEO_BLUR enabled for low bandwidth
34:2026-01-27 10:02:05 ERROR Network REJECT_TIMEOUT while calling API
45-2026-01-27 10:02:07 DEBUG psi-p packet received size=512
56-2026-01-27 10:02:10 INFO  Request finished traceId=abc
6

7. 排除某类日志(去掉 DEBUG)

命令

1grep -v "DEBUG" test.log
2

实际输出

12026-01-27 10:01:12 INFO  App started
22026-01-27 10:01:15 INFO  User login success userId=123
32026-01-27 10:02:01 WARN  VIDEO_BLUR enabled for low bandwidth
42026-01-27 10:02:05 ERROR Network REJECT_TIMEOUT while calling API
52026-01-27 10:02:10 INFO  Request finished traceId=abc
62026-01-27 10:03:00 ERROR Payment failed orderId=998
72026-01-27 10:03:10 INFO  App closed
8

8. 只看最后 N 行再过滤

命令

1tail -n 4 test.log | grep -i error
2

实际输出

12026-01-27 10:03:00 ERROR Payment failed orderId=998
2

9. 实时监控日志

命令

1tail -f test.log | grep -i error
2

模拟追加日志

另一个终端执行:

1echo "2026-01-27 10:04:00 ERROR New crash happened" >> test.log
2

实时窗口看到

12026-01-27 10:04:00 ERROR New crash happened
2

10. 你那条命令的完整含义

1grep -E -i "REJECT_TIMEOUT|VIDEO_BLUR|psi-p" tico_app2.log
2

等价于:

在 tico_app2.log 中查找包含以下任意关键词的行:

  • REJECT_TIMEOUT
  • VIDEO_BLUR
  • psi-p

并忽略大小写。


11. 必记 5 条黄金命令

1# 单关键词
2grep -i error app.log
3
4# 多关键词 OR
5grep -E -i "error|timeout|fail" app.log
6
7# 多条件 AND
8grep -i error app.log | grep -i timeout
9
10# 行号 + 上下文
11grep -n -C 3 -i error app.log
12
13# 实时监控
14tail -f app.log | grep -i error
15

12. 更快的替代:ripgrep(rg)

1brew install ripgrep
2rg -i "error|timeout|fail" app.log
3

速度通常比 grep 快 3~10 倍。



grep一下》 是转载文章,点击查看原文


相关推荐


如何将 Safari 标签转移到新 iPhone 17?
TheNextByte12026/1/18

当换用新 iPhone 17时,很多人都希望将 Safari 标签页无缝转移到新 iPhone 上,以便继续浏览未完成的网页内容。如何将 Safari 标签转移到另一部 iPhone?本文将介绍几种方法来帮助您轻松转移 Safari 标签页。 第 1 部分:如何通过 Handoff 将 Safari 标签转移到新 iPhone Handoff 是 Apple 设备之间强大的连续性功能之一,允许用户跨设备无缝传输任务,包括 Safari 选项卡。如果您想知道如何将 Safari 标签转移到另一


windows2025服务器系统如何开启多人远程?
网硕互联的小客服2026/1/10

在 Windows Server 2025 系统中,为了支持多人远程桌面会话,需要正确配置远程桌面服务(RDS,Remote Desktop Services)。Windows服务器系统默认只允许两个管理员会话用于远程管理。如果需要开启多人远程桌面功能(允许多个用户同时连接),需配置远程桌面会话主机(RDSH)或通过调整策略实现。 以下是实现多人远程桌面功能的详细步骤: 一、通过远程桌面服务(RDS)实现多人远程 Windows Server 提供了 远程桌面服务(RDS),这是开启多


赫蹏(hètí):为中文网页内容赋予优雅排版的开源利器
修己xj2026/1/2

fHJ9cZeOp.jpg 在当今信息爆炸的时代,内容呈现的形式往往决定了阅读体验的优劣。对于中文网站来说,一个长期存在的挑战是如何实现符合传统中文排版美学的网页展示。尽管现代CSS技术已经十分强大,但针对中文特点的排版优化仍然不够完善。今天,我们将介绍一个专门为解决这一问题而生的开源项目——赫蹏(hètí)。 什么是赫蹏? 赫蹏是一个专为中文内容展示设计的排版样式增强库,名称取自古代对纸张的雅称。这个项目由开发者Sivan创建,基于通行的中文排版规范,旨在为网站的读者提供更加舒适、专业的文章阅


AI中的网络世界
人生的方向随自己而走2025/12/23

灵光AI创作 第一条语法 语法: 在华三、华为、锐捷的组网过程中vlan是常用的,实现vlan的基本创建、access口,trunk口、hybrid口配置。 第二条语法 语法: 在华三、华为、锐捷的【交换机、防火墙】组网过程中vlan三层接口是常用的,实现vlan三层接口基本创建、并且配置好IPV4地址➕IPv6地址。 第三条语法 语法: 在华三、华为、锐捷的【交换机、防火墙】组网过程中stp 是常用的、给出stp工作原理和+基本配置命令+实战案例。 第四条语法 语法: 在华三、华为、锐捷的【交


解锁 Flutter 沉浸式交互:打造带物理动效的自定义底部弹窗
飛6792025/12/15

欢迎大家加入[开源鸿蒙跨平台开发者社区](https://openharmonycrossplatform.csdn.net),一起共建开源鸿蒙跨平台生态。 Flutter 下拉刷新组件深度开发指南 下拉刷新在移动应用中的重要性 下拉刷新是移动应用中列表类界面最基础也最关键的交互功能之一。根据2023年移动应用体验报告,超过92%的用户会在使用列表应用时自然尝试下拉刷新操作,其中78%的用户认为良好的刷新体验直接影响他们对应用的整体评价。 官方 RefreshIndicator 的局限性


公司内网部署大模型的探索之路
锋行天下2025/12/7

使用场景 公司的办公环境是内网,不和互联网相连(保密单位,别问为啥这样),要更新个项目依赖啥的,很麻烦,要使用U盘来回拷贝文件,这是前提,我现在要在内网环境部署大模型,也是一波三折,以下是我的探索之路 在外网使用docker 运行 ollama 镜像,由于我本地电脑是mac电脑,服务是linux,因为是要把容器导出为镜像文件拿到内网使用,所以拉取镜像的时候要指定宿主机架构,不然的话,导出的镜像文件在服务器无法运行 docker pull --flatform=linux/amd64 oll


Python高性能数据库操作实战:异步IO与多线程结合代码解析
2501_941800882025/11/28

在高并发数据库访问和大数据处理场景中,高性能数据库操作系统至关重要。Python结合异步IO和多线程,可实现快速、稳定的数据库操作平台。本文结合代码示例,讲解Python数据库操作实战方法。 一、基础数据库操作 使用sqlite3进行简单操作: import sqlite3 conn = sqlite3.connect('example.db') c = conn.cursor() c.execute('CREATE TABLE IF NOT EXISTS users (id INTEG


Jira部署在Windows完整流程
WangShade2026/2/5

目录 1 本文目标2 安装文件3 安装Jira4 安装java5 安装Mysql 8.05.1 解压Mysql安装包5.2 配置环境变量5.3 安装依赖5.4 安装mysql服务5.5 修改配置my.ini5.6 启动mysql5.7 访问数据库并修改密码5.8 安装驱动 6 配置java-agent6.1 查询Jira服务名称6.2 配置Java Agent 7 配置Jira7.1 生成注册码7.2 查看工作成果 8 生成插件注册码 1 本文目标 提供完整的软件安装包


基于华为openEuler系统部署Gitblit服务器
江湖有缘2026/2/14

基于华为openEuler系统部署Gitblit服务器 前言一、相关服务介绍1.1 openEuler系统介绍1.2 Gitblit介绍 二、本次实践介绍2.1 本次实践介绍2.2 本次环境规划 三、本地环境检查3.1 检查系统版本3.2 检查内核版本3.3 检查本地IP3.4 检查Docker环境 四、下载Gitblit软件包4.1 新建安装目录4.2 下载Gitblit软件包 五、部署Gitblit服务器4.1 修改配置文件4.2 修改service-centos.sh文件


构建工具的第三次革命:从 Rollup 到 Rust Bundler,我是如何设计 robuild 的
sunny_2026/2/22

本文将从第一人称实战视角,深入探讨前端构建工具的技术演进,以及我在设计 robuild 过程中的架构思考与工程实践。 引言:为什么我们需要又一个构建工具? 在开始正文之前,我想先回答一个无法回避的问题:在 Webpack、Rollup、esbuild、Vite 已经如此成熟的今天,为什么还要设计一个新的构建工具? 答案很简单:库构建与应用构建是两个本质不同的问题域。 Webpack 为复杂应用而生,Vite 为开发体验而生,esbuild 为速度而生。但当我们需要构建一个 npm 库时,我们需

首页编辑器站点地图

本站内容在 CC BY-SA 4.0 协议下发布

Copyright © 2026 XYZ博客