日志分析之输入分隔符m修饰符

RCE 漏洞防御:从Pikachu靶场看3类常见输入过滤的绕过与修复 本文通过Pikachu靶场实战分析RCE漏洞防御策略,深入剖析命令注入、动态代码执行和二阶注入三类常见攻击手法。针对远程命令执行(RCE)漏洞,提供白名单过滤、参数化执行等有效防御方案,并分享现代Web应用的多层次防护体系构建经验,帮助开发者提升系统安全性。 阅读详情

Perl默认的内部变量

$- 当前页可打印的行数,属于Perl格式系统的一部分
$!
根据上下文内容返回错误号或者错误串
$”
列表分隔符
$#
打印数字时默认的数字输出格式
$$ Perl
解释器的进程ID
$%
当前输出通道的当前页号
$&
与上个格式匹配的字符串
$(
当前进程的组ID
$)
当前进程的有效组ID
$*
设置1表示处理多行格式.现在多以/s和/m修饰符取代之.
$,
当前输出字段分隔符
$.
上次阅读的文件的当前输入行号
$/
当前输入记录分隔符,默认情况是新行
$:
字符设置,此后的字符串将被分开,以填充连续的字段.
$;
在仿真多维数组时使用的分隔符.
$?
返回上一个外部命令的状态
$@ Perl
解释器从eval语句返回的错误消息
$[
数组中第一个元素的索引号
$/
当前输出记录的分隔符
$] Perl
解释器的子版本号
$^
当前通道最上面的页面输出格式名字
$^A
打印前用于保存格式化数据的变量
$^D
调试标志的值
$^E
在非UNIX环境中的操作系统扩展错误信息
$^F
最大的文件捆述符数值
$^H
由编译器激活的语法检查状态
$^I
内置控制编辑器的值
$^L
发送到输出通道的走纸换页符
$^M
备用内存池的大小
$^O
操作系统名
$^P
指定当前调试值的内部变量
$^R
正则表达式块的上次求值结果
$^S
当前解释器状态
$^T
从新世纪开始算起,脚步本以秒计算的开始运行的时间
$^W
警告开关的当前值
$^X Perl
二进制可执行代码的名字
$_
默认的输入/输出和格式匹配空间
$|
控制对当前选择的输出文件句柄的缓冲
$~
当前报告格式的名字
$`
在上个格式匹配信息前的字符串
$’
在上个格式匹配信息后的字符串
$+
与上个正则表达式搜索格式匹配的最后一个括号
$<
当前执行解释器的用户的真实ID
$<digits>
含有与上个匹配正则表达式对应括号结果
$=
当前页面可打印行的数目
$>
当前进程的有效用户ID
包含正在执行的脚本的文件名
$ ARGV
从默认的文件句柄中读取时的当前文件名
%ENV
环境变量列表
%INC
通过do或require包含的文件列表
%SIG
信号列表及其处理方式
@_
传给子程序的参数列表
@ARGV
传给脚本的命令行参数列表
@INC
在导入模块时需要搜索的目录列表

 

 

$/ 当前输入记录分隔符,默认情况是新行

用法:在读入一个文件时while<FILE>默认情况下是一行一行读的(即以/n作为输入记录分隔符)

面对如下需求时:

一个log文件

# Query_time: 0  Lock_time: 0  Rows_sent: 1  Rows_examined: 2
SELECT template
FROM mos_templates_menu
WHERE client_id='0' AND menuid='0';

# Query_time: 0  Lock_time: 0  Rows_sent: 0  Rows_examined: 0
DELETE FROM mos_session
WHERE (time < 1198124076);

# Query_time: 0  Lock_time: 0  Rows_sent: 1  Rows_examined: 285
SELECT count(*) FROM mos_stats_agents
WHERE agent='Mozilla 5.0' AND type='0';

# Query_time: 0  Lock_time: 0  Rows_sent: 0  Rows_examined: 0
UPDATE mos_stats_agents SET hits=(hits+1) WHERE agent='Mozilla 5.0' AND type='0';

# Query_time: 0  Lock_time: 0  Rows_sent: 1  Rows_examined: 285
SELECT count(*) FROM mos_stats_agents
WHERE agent='Unknown' AND type='1';

# Query_time: 0  Lock_time: 0  Rows_sent: 0  Rows_examined: 0
UPDATE mos_stats_agents SET hits=(hits+1) WHERE agent='Unknown' AND type='1';


# Query_time: 1  Lock_time: 0  Rows_sent: 1  Rows_examined: 285
SELECT count(*) FROM mos_stats_agents WHERE agent='com' AND type='2';

 

要求从log文件中选出Query_time:1的sql语句

以上log文件有如下特点:

比较整齐,每个sql间用空行分隔,或者以;分隔

日志分析要仔细观察日志的特点 

用到两个关键知识点:

1.日志文件读取时不是按行,而是按照块读取,即while<FILE>得到的是一个多行文本块

2.模式匹配的/m /s修饰符的作用。

 

代码如下:

#! /usr/local/bin/perl

#

# 多行日志分析

 

use strict;

 

my $logFile = "/shvpn/test/wlj/perl/sqlLog.log";

 

open FILE, $logFile or die "cant open logfile $! /n";

 

$/ = ";";  # 更改默认的输入记录分隔符,或设置为$/ = “”:这样可以以单行或多行分隔

 

while (<FILE>) { # 每次读入一个多行文本块

      if (/# Query_time: 1[^;]*;/s*/mig) { #以多行文本块进行模式匹配

           print "$_ /n";

      }

}

 

模式匹配修饰符/m/s 的作用:

m的作用是将字符串视作多行,这样^和$不仅匹配整个字符串的开头和结尾,也匹配所有换行符的前后

s的作用是让”.”匹配所有字符包括换行符

m的作用只影响^和$的匹配,s的作用只影响/n的匹配,所以两者可以混合使用

测试代码:

my $src = "it

                                  is

                                  ok

                                  thanks!";

#my $src = "it /n is /n ok /n thanks!/n";

if ($src =~ /k$/m || ($src =~ /s$/m || ($src =~ /!$/m || ($src =~ /t$/m) {

      print "$src /n";

}

运行的结果都会打印出$src,因为/m修饰符将匹配所有的/n前后

 

但如果这样匹配:

my $src = "it

                                  is

                                  ok

                                  thanks!";

#my $src = "it /n is /n ok /n thanks!/n";

If ($src =~ /^i.*k$/sm || $src =~ /^i.*s$/sm) { # 要用.匹配所有的字符(包括换行符,#就必须用/x修饰符)

print "$src /n";

}

 

 
Linux sort命令实战:如何用-k参数精确控制字段排序(附常见坑点解析) 本文深入解析Linux sort命令的`-k`参数高阶用法,详细讲解如何通过`-k M.m,N.n`语法精确控制字段排序,包括多字段联合排序、修饰符运用及常见坑点解析。通过实战案例展示如何处理不规则分隔符、混合数据类型及中文排序,帮助开发者高效处理结构化数据排序需求。 阅读详情

相关推荐

禾赛XT16 vs XT32激光雷达实测对比:选16线还是32线?看完这篇不纠结

本文深度评测禾赛XT16与XT32激光雷达的性能差异与应用选择。通过实测数据对比,分析16线与32线激光雷达在点云密度、动态场景适应性及与IMU协同工作等方面的表现,帮助用户根据自动驾驶、机器人等不同应用场景做出最优选型决策。

table的专栏 944

PHP 8.4 正则表达式模式修饰符详解:i、u、s、m 等 10 种场景实战

本文深入解析PHP 8.4中正则表达式的10种核心模式修饰符,包括i、u、s、m等,通过实战场景演示如何高效处理文本匹配、日志分析和国际化支持。特别介绍PHP 8.4对PCRE引擎的优化,提升Unicode字符处理和性能表现,帮助开发者编写更精确、高效的正则表达式。

congtaixiao7151的博客 334

MIC(Maximal Information Coefficient)最大互信息系数

MIC(Maximal Information Coefficient)最大互信息系数是一种用于衡量两个变量之间相关性的统计量。它扩展了传统的互信息(MI)和条件互信息(CMI)的概念,具有更广泛的应用范围。MIC能够捕获包括功能性和非功能性的广泛的关联,具有普遍性和公平性。普遍性意味着在足够的样本量下,MIC能够捕捉到广泛的相关关系,而不仅仅局限于特定的功能类型;公平性则意味着MIC对不同类型的包含同等噪声的关系给出了相似的分数。需要注意的是,虽然MIC具有很多优点,但它也有一些局限性。

qlkaicx的博客 4604

PERL内置变量表

从网上搜索总结的PERL内置变量,可以在程序中引用 $- 当前页可打印的行数,属于Perl格式系统的一部分 $! 根据上下文内容返回错误号或者错误串 $" 列表分隔符 $# 打印数字时默认的数字输出格式 $$ Perl解释器的进程ID $% 当前输出通道的当前页号 $& 与上个格式匹配的字符串 $( 当前进程的组ID $) 当前进程的有效组ID $* 设置1表示处理多行格式.现在多以/s和/m

923

【通信协议-RTCM】MSM语句(1) - 多信号GNSS观测数据消息格式

注释:RTCM响应消息1020为GLONASS星历信息,暂不介绍,前公司暂未研发RTCM消息类型版本的DR/RTK模块,DR/RTK模块仅NMEA消息类型使用注释:公司使用的多信号语句类型为MSM4&MSM7,也应该是运用最广泛的语句类型,例如本人之前在公司开发的工具全是基于MSM7语句类型来进行的。

qxj2422640226的博客 2092

【数据结构】平行四边形数量

平行四边形个数,哈希表,散列

cyy010617的博客 4009

以行为记录项,空格为分隔符的日志文件解析

在实际应用中往往会发现这样一些日志文件,它们以一行表示一个记录项,记录项中的每个字段间以空格来分隔。比如,如下日记文件      name1 sex1 age1 height1 weight1      name2 sex2 age2 height2 weight2     对于该类文件的解析可参考如下代码模块: /* 从Line中读取第N个空格的位置 成功返回第N个空格位置,失败

yuanbinquan的专栏 1126

FFT中的精度博弈:定点数缩放、块浮点与溢出处理在Vivado IP核中的实践权衡

本文探讨了在Vivado FFT IP核中实现高精度快速傅里叶变换的关键技术,包括定点数缩放策略、块浮点模式及溢出处理机制。通过分析不同精度控制方案的资源开销与性能权衡,为工程师在医疗成像、雷达信号处理等高动态范围应用中优化FFT实现提供实践指导。

melon的博客 1096

SpringBoot自定义logback日志配置

前言:默认情况下,SpringBoot内部使用logback作为日志实现的框架,将日志输出到控制台,不会写到日志文件。如果在application.properties或application.yml配置,这样只能配置简单的场景,保存路径、日志格式等。复杂的场景(区分 info 和 error 的日志、每天产生一个日志文件等)满足不了,只能自定义配置文件logback-spring.xml。 一、application.properties简单配置logback日志 1.1、SpringBoot默认的日

何哥的博客 1万+

告别二极管发热!手把手教你用MOS管搭建同步整流电路(附死区时间设置避坑指南)

本文详细介绍了如何利用MOS管搭建同步整流电路(SR),以替代传统二极管,显著降低导通损耗和发热问题。内容涵盖自驱动方案的选择、关键元件参数计算、PCB布局要点及死区时间设置技巧,帮助工程师优化电源设计效率。

weixin_29540599的博客 451

Windows系统离线搭建PyTorch深度学习环境全攻略(CUDA+cudnn实战)

本文提供了一份在Windows系统下离线搭建PyTorch深度学习环境的完整实战指南。文章详细讲解了如何在没有网络连接的情况下,正确安装和配置CUDA、cudnn以及PyTorch,并构建独立的Python虚拟环境。重点强调了版本依赖关系的重要性,并提供了从驱动准备到环境验证的每一步操作,旨在帮助用户高效、稳定地部署可复用的GPU深度学习开发环境。

table的专栏 579

日志分隔工具Cronolog的使用

Cronolog 分割 Tomcat8 Catalina.out日志。 默认情况下,tomcat的catalina.out日志文件是没有像其它日志一样,按日期进行分割,而是全部输出全部写入到一个catalina.out,这样日积月累就会造成.out日志越来越大,给管理造成了不便,为了实现像其它日志文件一样按日期归档,这里我采用cronolog来完成日志分割。 一、安装Cronolog YU...

西门飘雪的博客 2万+

老 MacBook 部署 OpenClaw:比 Windows 更稳定

老款 MacBook 在运行 OpenClaw 时,Linux 系统相比 Windows 系统具有更好的稳定性和性能。本文将从多个维度对比 Linux 和 Windows 在老款 MacBook 上运行 OpenClaw 的表现,帮助您选择更合适的操作系统。

一键难忘的博客 2096

Logtail从入门到精通(五):分隔符Nginx访问日志采集实战

前言 上一节中我们介绍了如何使用正则表达式的方式来解析日志),将非结构化的日志转化为半结构的数据。除正则表达式方式外,日志服务还支持分隔符模式的日志,分隔符支持单字符和多字符两种方式。本文通过Nginx分隔符访问日志为大家介绍如何使用Logtail采集分隔符类型的日志。 分隔符日志介绍 分隔符日志使用分隔符(Separator)将一条日志切分成多个字段,...

weixin_33670713的博客 888

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Perl默认的内部变量

$- 当前页可打印的行数,属于Perl格式系统的一部分 $! 根据上下文内容返回错误号或者错误串 $” 列表分隔符 $# 打印数字时默认的数字输出格式 $$ Perl解释器的进程ID $% 当前输出通道的当前页号 $& 与上个格式匹配的字符串 $( 当前进程的组ID $) 当前进程的有效组ID $* 设置1表示处理多行格式.现在多以/s和/m修饰符取代之. $, 当前输出字段分隔符 $. 上次

yanyp的专栏 217

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

跨行文本匹配linux,【Perl】Perl中的跨行匹配

引言:perl默认的操作是对单行的操作,但我们在使用perl的匹配或替换的时候,经常会遇到需要跨行操作的情况。这就涉及到跨行匹配。跨行匹配主要有以下三种方法:1.修改“$/”$/表示当前输入记录分隔符,默认情况是换行符用法:在读入一个文件时while默认情况下是一行一行读的(即以\n作为输入记录分隔符)有如下的需求,一个log文件:# Query_time: 0Lock_time: 0Rows...

weixin_42309087的博客 1203

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

【PERL】Perl默认的内部变量

$- 当前页可打印的行数,属于Perl格式系统的一部分$! 根据上下文内容返回错误号或者错误串$” 列表分隔符$# 打印数字时默认的数字输出格式$$ Perl解释器的进程ID$% 当前输出通道的当前页号$& 与上个格式匹配的字符串$( 当前进程的组ID$) 当前进程的有效组ID$* 设置1表示处理多行格式.现在多以/s和/m修饰符取代之.$, 当前输出字段分隔符$. 上次阅...

a12141986的博客 89

Python re 模块使用完全教程

re模块是 Python 标准库中处理正则表达式的核心工具,提供强大的文本模式匹配、搜索和替换功能。数据验证(邮箱/手机号格式校验)文本内容提取(日志分析/网页爬虫)批量文本处理(格式转换/敏感词过滤)复杂字符串操作(多条件分割/模板替换)正则表达式引擎基于 PCRE(Perl Compatible Regular Expressions)实现函数名称匹配范围返回类型适用场景性能特点re.match仅字符串开头Match/None格式校验快速失败re.search全局首次匹配。

YAnt的博客 2702

从工资表处理到日志分析:Linux sort命令的5个生产级应用场景

本文详细解析了Linux sort命令在薪资数据处理、日志分析、CSV清洗、系统监控和版本号排序等5个生产级场景的应用技巧。通过-k参数组合、多级排序和并行处理等高级用法,帮助开发者高效处理结构化文本数据,提升运维与开发效率。

ss78901的博客 832

Linux排序进阶:sort -k参数实战指南与多字段排序技巧

本文深入解析Linux sort命令的-k参数,重点剖析-k M.m,N.n高级语法,通过实战案例详解多字段排序、字符位置排序及与-u、-n等选项的联用技巧。掌握sort -k是高效处理日志分析、数据清洗等任务的关键,能显著提升命令行下的数据处理能力。

whisky的博客 778

全网最易懂SHELL文本处理-sed,awk,grep,正则表达式

本文介绍了Linux中几个常用的文本处理命令:cut、uniq、sort和grep。cut命令用于提取文本的指定列或字符范围,支持-f(列提取)、-d(指定分隔符)和-c(字符范围)等选项。uniq用于删除重复行,常与sort配合使用。sort命令支持多种排序方式,包括数值排序(-n)、反向排序(-r)和按字段排序(-k)。grep是强大的文本搜索工具,支持正则表达式匹配,提供-i(忽略大小写)、-v(反向匹配)、-n(显示行号)等常用选项。这些命令在文本处理中非常实用,能有效提高工作效率。

m0_60891625的博客 419

你真的会用preg_match吗?:深入剖析PHP正则函数底层机制

掌握PHP正则表达式用法,深入解析preg_match底层机制与高效匹配技巧。涵盖字符串验证、提取替换等场景,详解模式修饰符与回溯控制,提升代码稳定性与执行效率。值得收藏的实战指南。

VarPerch的博客 820

grep高级技巧:从基础搜索到高效文本处理的实战指南

在Linux和Unix系统中,文本搜索与处理是日常开发和运维的核心基础。grep作为最常用的命令行工具之一,其基础功能是进行模式匹配和行过滤,但深入掌握其高级选项能极大提升工作效率。理解grep的工作原理,即基于正则表达式引擎进行模式匹配,可以帮助用户从简单的关键词搜索进阶到复杂的文本提取与数据分析。这些高级技巧的技术价值在于将手动、重复的文本处理任务自动化,减少人工干预,提升处理大规模日志和代码库的准确性与速度。在实际应用场景中,如日志分析、代码审查、数据清洗和安全扫描等,合理运用grep的特定选项可以解

weixin_34199405的博客 402

PHP正则表达式实战精讲(从入门到精通必备手册)

掌握PHP正则表达式用法,轻松解决字符串匹配与验证难题。涵盖常用模式、preg_match与preg_replace等核心函数,适用于表单验证、数据提取等场景,高效精准。实用技巧与案例解析,助你从入门到精通,值得收藏。

PixelGlow的博客 1031

【Python正则表达式终极指南】从零到工程级实战

本文通过10+个真实场景案例,深度解析Python re模块的核心技术与高级技巧,涵盖模式匹配、文本提取、数据清洗等关键领域,提供可复用的正则模板与性能优化方案。

赶紧的博客 1358

猫抓:浏览器资源嗅探插件完整指南——网页视频下载与M3U8解析实操

猫抓(Cat-Catch)是一款免费开源的浏览器资源嗅探插件:它能识别网页里的视频、音频、图片并直接存到本地,还支持 M3U8 分片流合并。所有数据处理都在浏览器本地完成,代码完全公开。 ## 网页视频到底怎么存下来 右键保存在图片这类常规文件上一直有效,但对视频网站基本失效。你在播放器里看到的画面,往往是按顺序拉取的 TS 小片段,完整的文件根本不存在于页面里;真正能用的地址还常常藏在请求头

gitblog_02175的博客 414
上一篇: my,our,local,Perl范围变量声明
下一篇: 数组小结
utopia_wang
博客等级 码龄20年 7粉丝 27原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值