如何使用正则表达式提取iperf测试结果中[SUM]行的速率数值
iperf SUM行速率提取正则方案
原正则错误点
你之前写的正则有两个核心问题:
- 正则语法中
[SUM]代表字符组,只会匹配S、U、M三个单个字符,无法匹配字面量[SUM]字符串,需要对中括号做转义处理 - 没有设置针对速率数值的捕获组,也没有准确锚定sender、receiver的行特征,导致匹配结果不符合预期
正确正则写法
分两次匹配(更灵活,适用行顺序不固定的场景)
- 提取SUM发送端速率:正则为
^\[SUM\].*?(\d+\.\d+) Gbits\/sec.*sender$,第一个捕获组返回值就是first对应的速率值 - 提取SUM接收端速率:正则为
^\[SUM\].*?(\d+\.\d+) Gbits\/sec.*receiver$,第一个捕获组返回值就是second对应的速率值
单次匹配(适用SUM发送、接收行连续且顺序固定的场景)
正则为^\[SUM\].*?(\d+\.\d+) Gbits\/sec.*sender\r?\n\[SUM\].*?(\d+\.\d+) Gbits\/sec.*receiver$,其中捕获组1对应发送端速率,捕获组2对应接收端速率。
效果验证
用你提供的测试结果测试,可准确捕获到发送端4.89、接收端4.88的数值,完全符合要求。
内容的提问来源于stack exchange,提问作者Kobi Edri
相关产品推荐
相关产品推荐

