如何利用正则表达式提高日志分析效率

应急响应之日志分析专题 阅读详情

1. 为什么要用正则表达式?

正则表达式提供了一套灵活便利的字符串匹配规则,可以说是文本处理领域的瑞士军刀,这里的文本处理当然也包括日志分析。

比如如果要过滤模块A(关键字“moduleA”)的所有错误、失败和异常,采用普通关键字过滤是下面这个流程:

使用关键字"moduleA"过滤出所有模块A的日志 -> 拷贝出结果,再使用关键字"error"过滤出模块A的所有错误 -> 基于第一份拷贝结果,再使用关键字"fail"过滤出模块A的所有错误 -> 基于第一份拷贝结果,再使用关键字"exception"过滤出模块A的所有异常。

很明显,这个流程效率非常低下,也间接导致了开发者对于日志分析,特别是复杂问题的日志分析,产生心理抵触。

而如果采用正则表达式,则是另一番场景:

使用正则表达式"moduleA&(error|fail|exception)"一次性得出所有结果。

简单明了!

2. 如何编写正则表达式

标准正则表达式完整教程可参考这里:正则表达式 – 语法 | 菜鸟教程

对于日志分析场景,常用的如下:

单个普通关键字word
以“或”关系组合的多个关键字(注意|两边不要有空格)word1|word2|word3
模糊匹配(其中.*代表匹配任意字符0次或多次)hel.*rld

部分工具也会提供自己的扩展正则,能够进一步提高效率,比如Tilipa的日志工具,它提供了如下扩展:

“非”逻辑(“!”), 比如查找所有异常,但不包含网络异常exception&!NetworkException
“且”逻辑("&"), 比如查找模块A的错误moduleA&error

3. 如何使用正则表达式

这个要看具体的工具,工具大体分为三类,一类是命令行工具,另一类是桌面工具,最后一类是web工具。

3.1. 先来说命令行工具

常用的日志分析命令行工具且支持正则表达式的有:vim、grep,这些工具即可单独使用,也可组合使用。

vim的使用如下:

首先通过“vim file”打开对应日志文件,其中file是文件路径指向你的日志文件。打开后按下"/", 然后输入正则表达式:

按下确定键后即可执行查找,如果找到多处,可通过按"n"键或者“N”键向前向后切换。

grep的使用格式为:grep -nE “word1|word2” file,其中“word1|word2”为你的正则表达式,file为文件路径。

命令行的优势是足够灵活,如果非常熟悉命令行,可以达到事半功倍的效果;不过,缺点也很明显,主要是两点,一是快速翻页浏览不方便,二是对于新手不友好。

3.2. 再来说桌面工具

支持正则表达式的桌面工具很多,常用的有notepad++、editplus、sublime等,甚至大多数的标准IDE也支持,可以直接使用。就体验来说,notepad++比较好,下面介绍notepad++的正则基本用法。

首先通过“文件->打开”打开日志文件:

 然后通过“ctrl+f”打开搜索框,勾选“正则表达式”,输入关键字,点击“在当前文件中查找”即可:

 搜索结果如下:

 双击结果可以定位到具体的行。

3.3. 最后说下web工具

web工具最大的优势在于,几乎适用所有平台,而且轻量,即搜即用,即用即走,非常契合他的工具属性。已知的用于分析日志的web工具不多,比较有特色的一个是Tilipa日志工具(Tilipa-日志工具),它除了支持标准正则表达式以外,还提供了一些扩展能力,比如支持“且”逻辑和“非”逻辑,下面介绍它的基本用法。

首先通过“文件->打开”或者“alt+shift+o”打开日志文件:

然后通过“文件->过滤”或者“alt+shift+f”打开搜索框,勾选“扩展正则”,输入关键字:

 

确定后过滤结果如下:

 下面贴出一些扩展正则的其他用法:

 

 

 

需要补充一句,Tilipa日志工具还支持超大日志文件,有需求的同学可以试试,体验还行。

4. 常用场景与对应正则表达式汇总

单个关键字过滤word
以"或"关系过滤多个关键字word1|word2|word3
以“且”关系过滤多个关键字(用于过滤一个或多个模块的所有问题)(module1|module2)&(error|fail|exception)
去除干扰项word1&!discard

使用kettle进行正则表达式组件日志分析 使用Kettle(Pentaho Data Integration)进行日志分析是一种常见的数据处理任务,特别是当你需要从大量的日志文件中提取和分析数据时。Kettle是一个强大的ETL工具,能够处理各种数据分析任务,包括日志分析。根据你的具体需求和日志的格式,你可以创建适合的转换来提取、转换和分析日志数据。 阅读详情

相关推荐

提高日志分析效率的几个小手段

提高日志分析效率的几个小手段,涉及标记、多词匹配、非逻辑、分页、常用正则等。

fix_bugs的专栏 1271

Java正则表达式解析复杂跨行日志

使用正则解析复杂跨行日志

weixin_42202992的博客 764

C#正则表达式日志分析魔法:5个咒语,让日志从“天书”变“明信片”!

看着像“乱码森林”?正则表达式就是你的“翻译魔法杖”——记住:正则不是“万能钥匙”,但它是日志分析的“瑞士军刀”——🔥关注墨瑾轩,带你探索编程的奥秘!🔥超萌技术攻略,轻松晋级编程高手🚀。🔥技术宝库已备好,就等你来挖掘🚀。🔥订阅墨瑾轩,智趣学习不孤单🚀。:如何从日志中快速提取时间戳?🔥即刻启航,编程之旅更有趣🚀。:如何快速定位所有错误日志?:如何从日志中提取用户ID?:如何计算API的响应时间?:如何按日志类型自动分类?(假设用户ID是数字):多模式匹配 + 分组。(或者更精准的模式)

java专栏 391

学习正则表达式之nginx日志分析

正则表达式基本学习,简单的分析字符串

hjzyhm的博客 1631

「自然语言驱动生产力」32. 从零实战:自然语言生成正则表达式(附可运行代码+真实场景案例)

摘要:正则表达式是数据处理、文本匹配的核心工具,但语法晦涩、调试困难——新手写一个“匹配手机号”的正则可能要查3次文档,改5次格式;即使是熟手,面对“密码强度验证”“日志错误提取”等复杂需求,也需反复调试。本文基于Python、OpenAI API(快速上手)与regex库(高性能正则匹配),提供一套可落地的“自然语言→正则表达式”解决方案:从3分钟环境搭建,到基础正则生成、复杂模式构建,再到数据清洗、日志分析的实战案例,每个功能均附完整代码与实测结果。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 899

使用Java正则表达式分析处理日志

NULL 博文链接:https://lfl2011.iteye.com/blog/2031013

ide 日志 乱码_IDE日志分析方法pt。 1个

ide 日志 乱码 介绍 我认为大多数软件工程师都了解日志的重要性。 它们已成为软件开发的一部分。 如果无法解决问题,我们尝试在日志中查找原因。 对于一些简单的情况,当错误阻止应用程序打开窗口时,这可能就足够了。 您可以在日志中找到问题,然后在Google上查找并应用解决方案。 但是,如果要修复包含许多组件的大型产品中的错误,则分析日志成为主要问题。 通常,维护工程师(正在修复不开发新功能的错...

最佳 Java 编程 290

算法笔记 经典取石子游戏总结 博弈论

经典取石子游戏总结 1.巴什博弈 有一堆石子共n个,A和B轮流取,A先取。每次最少取1个,最多取m个,先取完者获胜(即没有石子取的人失败)。A与B都足够聪明,问A能否获胜。 结论:当n%(m+1)!=0时A必胜,否则必败。 2.斐波那契博弈 有一堆石子共n个,A和B轮流取,A先取。每次最少取1个。第一次不能取完。从第二次开始,每个人取的石子数至少为1,至多为前一个人取的石子数的2倍。先取完者获胜。...

CraigMC的博客 2936

日志解析效率提升80%,Python在游戏数据分析中的惊人应用

提升游戏日志处理效率80%的实战方法,揭秘Python在游戏日志分析Python中的高效应用。适用于玩家行为追踪、异常检测等场景,利用Pandas与正则表达式实现快速解析,大幅缩短处理时间,值得收藏。

ByteChat的博客 693

华为模拟器eNSP练习题 - HCIA综合实验

华为模拟器eNSP练习题 - HCIA综合实验 题目要求 ISP路由器只能配置IP地址,之后不得进行其他任何配置; 整个内部网络基于192.168.1.0/24进行地址规划; R1/R2之间启动OSPF协议,单区域; PC1-PC4自动获取IP地址; PC1不能telnet R1,PC1外的其他内网pc可以; PC1-PC4可以访问PC5,R2的公网接口只拥有一个公有IP12.0.0.1; 外部的client可以通过域名www.ensp.com访问http server; ISP路由telnet 12.0

炸鸡店老板z的博客 9871

开源CC6920差分霍尔电流传感器模块实战指南——从选型到波形分析

本文详细介绍了CC6920差分霍尔电流传感器模块的选型、硬件连接、参数计算及波形分析技巧。通过实战案例,展示了该开源硬件在电流测量中的优势,包括超低内阻、电气隔离和抗干扰能力,适用于电机控制、开关电源保护等场景。

weixin_28738397的博客 378

edit8实战教程:用终端编辑器处理日常任务

作为开发者,我们每天有超过40%的时间在与终端打交道。无论是修改配置文件、处理日志还是编写脚本,一个高效的终端编辑器能显著提升工作流。然而,传统工具要么过于简陋(如nano),要么学习曲线陡峭(如vim/emacs)。**edit8**——这款致敬经典MS-DOS Editor的现代终端编辑器,以VS Code般的操作逻辑和极简设计,重新定义了终端编辑体验。 读完本文,你将掌握: - 3分钟上手...

gitblog_00990的博客 1033

VisionPro 9.0 QuickBuild里用C#脚本调用Halcon 23.11模型,保姆级图文配置流程

本文详细介绍了如何在VisionPro 9.0 QuickBuild环境中使用C#脚本调用Halcon 23.11深度学习模型,提供从环境配置到模型集成的保姆级图文教程。重点解决图像格式转换、许可证配置等工业视觉检测中的常见问题,帮助开发者快速实现高效、稳定的视觉检测流水线部署。

weixin_27027459的博客 436

evil-snipe:快速且精准的文本跳转工具

evil-snipe:快速且精准的文本跳转工具 evil-snipe 是一款专为 evil-mode 设计的文本跳转工具,它模拟了 vim-seek 和 vim-sneak 的功能,提供了更加高效和精确的文本跳转方式。 项目介绍 evil-snipe 通过使用两个字符的组合快速定位文本中的特定位置,相较于 evil-mode 内置的 f/F/t/T 跳转功能,它具有更直观的视觉反馈和更高的准确性。...

gitblog_01080的博客 588

QGIS-空间分析-核密度分析

本文在QGIS软件中使用核密度估计法分析全球历年的地震数据,旨在分析出地震频发且严重的区域,为地震防控提供参考依据。全球历年地震数据来源于网络,仅用于技术学习探索。通过核密度分析,可以观察到南美、美国西部海岸线和太平洋北部区域在全球地震分布状态中是最为集中和强烈的。

imxiezy的博客 2467

BGP路由聚合:自动聚合和手动聚合

路由聚合是指将多条具体的路由合并为一条聚合路由,以减少路由表的条目数。这种技术通过只向对等体发送聚合后的路由,而不发送所有的具体路由,来减小路由表的规模。同时,被聚合的路由如果发生路由振荡,也不再对网络造成影响,从而提高了网络的稳定性。

网络技术联盟站 1220

[原创]根据logcat日志定位程序具体崩溃、错误、闪退原因的关键词

今天崩溃测试报告出来了崩溃了很多,查看日志的时候发现基本上是这些关键词,但是崩溃的手机那么多,刚开始我一个一个切换搜索,蛋疼,后面总结一下就省事多了,最后又发现还是麻烦,就换成点击历史搜索切换还是不省事就直接用正则,哈哈。偷懒是我的天赋FATAL EXCEPTIONShutting down VMActivity pause timeout forApplication is not respon...

情随事迁个人博客 580

使用FSL对DTI数据进行预处理

在fsl官网我们可以看到是同时使用了AP和PA图像处理,采用的是最小二乘法将2个图像合并为1个图像。–inindex此处需要处理的是PA图像,在acq_param.txt中我们是把这个放在第一行的,此处为1,如果处理的是AP图像,则此处为2。为了校正磁场引起的畸变,对DTI的B0像分别采集了A>P和P>A的反向编码的两种B0像。即如果AP和PA只有1个B0像时,那么这里就是两行,如果各有3个B0像则这里应该是6行。假设转换后的图像为sub01_AP.nii.gz和sub01_PA.nii.gz。

weixin_52073820的博客 4839

linux下使用cat grep快速查找内容

查看日志快速定位ERROR cat log.txt | grep 'ERROR' -A 5 意思是,在log.txt文件中,查找ERROR字符,并显示ERROR所在行的之后5行 cat log.txt | grep 'ERROR' -B5之前5行 cat log.txt | grep 'ERROR' -C5 前后5行 cat log.txt | grep -v 'ERROR'...

潇兮水寒的博客 9471

使用 MATLAB/Simulink + Simscape Electrical + SimPowerSystems + Stateflow,构建一个多能互补微电网系统的动态响应仿真模型

本文详细介绍了使用MATLAB/Simulink构建多能互补微电网动态响应仿真模型的方法。文章从系统架构设计入手,包含光伏、风电、柴油发电机、锂电池储能等多种组件,重点讲解了建模过程、控制策略(下垂控制、PLL、SOC管理)和模式切换逻辑(Stateflow)。通过四种典型场景(负荷突增、光伏出力骤降、并网/孤岛切换、电动机启动)的仿真分析,验证了微电网在动态响应中的关键性能指标,并提出了高可靠性设计建议。该模型为微电网的稳定性分析和优化设计提供了有效工具,特别强调了储能系统在快速功率支撑中的重要作用。

amy_mhd的博客 160

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

3秒定位代码隐患:IntelliJ IDEA社区版正则引擎深度解析

正则表达式(Regular Expression)是开发者日常工作中的工具,面对复杂模式匹配时,你是否遇到过性能瓶颈或语法困惑?IntelliJ IDEA Community Edition内置的正则引擎通过模块化设计和智能分析,让代码搜索效率提升300%。本文将从引擎架构、实战技巧到性能优化,全面解锁这款隐藏在IDE中的强大工具。 ## 引擎架构:从语法解析到模式匹配 IntelliJ的正则...

gitblog_00562的博客 688

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

python学习之在多个文件中依次查找多个关键词

这篇博文记录如何在多个目标文档中一次性地查找多个关键词。

JJJJJJJerry的博客 2594

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

掌握文本搜索的利器:深入解析 Linux grep 命令的强大功能

grep 是一个功能强大的命令行工具,用于在文件中搜索指定的模式(字符串或正则表达式)。本文详细介绍了 grep 的基本用法和常用选项,包括忽略大小写、显示行号、递归搜索、仅显示匹配的文件名、显示不匹配的行、匹配整个单词以及显示上下文行。此外,还介绍了如何使用基本和扩展的正则表达式进行复杂模式匹配。通过灵活运用 grep,用户可以高效地进行文本搜索和处理,是日志分析、数据筛选等任务中的利器。

落雨碎江南 1372

Vim常用匹配、查找、替换命令总结

以前都是从头开始找,最近处理log文件很多。 在vim 中输入 :1?XXXX1的意思是文件的第一行?的意思是反向查找XXXX就是你要找的关键字 更新:Linux 从末尾开始查找日志 tac catalina.out | grep -B 2 ‘关键字’ 转载于:https://www.cnblogs.com/jpfss...

WGH100817的博客 377

Shell脚本编程完全指南:从入门到实战应用(终结篇)

⚡ ​​高效自动化​​:减少重复性人工操作🔧 ​​系统管理​​:深度集成Linux系统工具🚨 ​​实时监控​​:快速响应系统异常📦 ​​轻量部署​​:无需额外环境依赖。

2503_93012393的博客 535

微服务可靠性测试_微服务测试的关键——通过ELK查询日志

为什么需要ELK一般我们在工作中查询日志搜索问题时,通常需要直接在日志文件中进行grep、awk 操作就可以获得自己想要的信息。但在规模较大的场景中,此方法效率低下,面临问题包括日志量太大如何归档、文本搜索太慢怎么办、如何多维度查询。随着微服务的广泛应用,无论系统日志,还是业务日志都更进一步了。运维或者开发们发现要从这么大规模的系统中(几百个上千个服务)产生的千亿规模日志去排查问题,简直是难于上青...

weixin_42118770的博客 175
上一篇: 终于有正则表达式支持且关系(‘&‘)了
下一篇: 日志过滤中常用的正则表达式
fix_bugs
博客等级 码龄12年 89粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值