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

PowerShell提取日志中HTTP响应码对应的小时信息

解决日志提取小时与HTTP响应码分组的问题

需求回顾

从日志文件中筛选包含ms 2xx/ms 3xx/ms 4xx/ms 5xx的行,输出格式为「小时 ms响应码」(例如14 ms 200)。

问题根源

之前的代码仅返回单个小时,大概率是因为没有遍历所有匹配的日志行,或者变量被后续行覆盖,只保留了最后一次匹配的结果。

解决方案

方法1:用awk快速处理(推荐日志场景)

假设你的日志时间格式类似[10/Oct/2000:13:55:36 +0000](时间字段为第4列),执行以下命令:

awk '/ms [2345][0-9]{2}/ {
    # 拆分时间字段提取小时
    split($4, time_parts, /[:\[]/)
    hour = time_parts[2]
    # 定位并提取ms响应码部分
    match($0, /ms [2345][0-9]{2}/)
    print hour, substr($0, RSTART, RLENGTH)
}' 你的日志文件名.log
  • 调整$4为你日志中时间字段所在的列数
  • 如果时间格式不同,修改split的分隔符规则即可

方法2:用Python脚本处理

如果需要更灵活的逻辑,用Python遍历每行日志并匹配:

import re

# 正则匹配小时和目标响应码,根据日志格式调整正则表达式
log_pattern = re.compile(r'.*(\d{2}):\d{2}:\d{2}.*ms ([2345]\d{2})')

with open('你的日志文件名.log', 'r', encoding='utf-8') as log_file:
    for line in log_file:
        match_result = log_pattern.search(line)
        if match_result:
            print(f"{match_result.group(1)} ms {match_result.group(2)}")
  • 正则表达式需根据你的日志实际格式调整,确保能准确捕获小时和响应码
  • 循环遍历每一行,避免只保留最后一次匹配的结果

注意事项

  • 务必根据自身日志的字段顺序、时间格式调整代码中的字段索引或正则规则
  • 可以先取少量日志行测试匹配逻辑,确认结果符合预期后再批量处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 01:25:12