You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用awk单行命令过滤日志中avg-scan大于2的记录

过滤日志中avg-scan值大于2的记录

我来帮你搞定这个日志筛选需求!你已经找到了提取avg-scan数值的思路,现在只需要调整一下awk的处理逻辑,就能直接输出符合条件的完整日志行,不用分步拼接命令啦。

直接可用的命令

awk '/avg-scan/ { 
    val = $31; 
    sub(/^<|,>$/, "", val); 
    if (val > 2) print $0 
}' aa

命令解释

  • /avg-scan/:先匹配包含avg-scan的行,和你之前用grep "avg-scan"的作用一致
  • val = $31:把日志行里的第31个字段(也就是avg-scan <X>,这部分)赋值给变量val
  • sub(/^<|,>$/, "", val):用正则表达式去掉val开头的<和结尾的,>,把它转换成纯数字格式
  • if (val > 2) print $0:判断数值是否大于2,如果满足条件就打印整行日志

测试验证

用你提供的日志文件测试,这个命令会输出你预期的三条记录:

INFO | L 09 Aug 2019 14:23:13.073216 | eoTcapCAP | LinksHandler stats: Probe <100.145.223.37>. FID <549>. State , LCS <09 Aug 2019 10:50:34.587>, new-CSDRs <5000>, CSDR/s <78>, avg-read <0.033>, avg-scan <104.494>, read-ops <5>, total_csdr <5000>, browse-time <17.187>, browse-act
INFO | L 09 Aug 2019 14:23:13.073548 | eoTcapCAP | LinksHandler stats: Probe <10.124.263.71>. FID <549>. State , LCS <09 Aug 2019 11:23:11.800>, new-CSDRs <0>, CSDR/s <0>, avg-read <2.029>, avg-scan <79.735>, read-ops <31>, total_csdr <0>, browse-time <1.038>, browse-act
INFO | L 09 Aug 2019 14:23:13.073681 | eoTcapCAP | LinksHandler stats: Probe <10.116.213.48>. FID <549>. State , LCS <09 Aug 2019 11:23:11.100>, new-CSDRs <0>, CSDR/s <0>, avg-read <2.016>, avg-scan <79.713>, read-ops <31>, total_csdr <0>, browse-time <1.791>, browse-act

额外小提示

如果习惯用less浏览后再筛选,也可以写成管道形式:

less aa | awk '/avg-scan/ { val = $31; sub(/^<|,>$/, "", val); if (val > 2) print $0 }'

不过直接让awk读取文件(第一个命令)的效率更高,减少了管道的开销。

内容的提问来源于stack exchange,提问作者user1107731

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 06:46:36