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

使用Awk管道从多行日志提取自动对焦相关参数并生成汇总

解决方案:直接用GNU Awk处理日志文件

下面的Awk脚本可以直接处理日志文件,无需依赖grep -B4管道,会自动跟踪触发词AutoFocus completed之前的目标参数,匹配到触发词时输出所需的时间戳和参数:

BEGIN {
    # 初始化变量
    focuser_pos = ""
    avg_hfr = ""
    detected_stars = ""
    timestamp = ""
}

# 提取.log和|INFO之间的时间戳(适配常见日志格式,可根据实际日志调整正则)
/\|INFO/ {
    match($0, /\.log\[(.*?)\]\|INFO/, ts_match)
    if (ts_match[1] != "") {
        timestamp = ts_match[1]
    }
}

# 捕获调焦器位置
/Moving Focuser to position/ {
    # 提取数字部分(假设格式为"Moving Focuser to position 1234")
    focuser_pos = $NF
}

# 捕获平均HFR
/Average HFR:/ {
    # 提取冒号后的数值(假设格式为"Average HFR: 1.23")
    avg_hfr = $NF
}

# 捕获检测到的恒星数
/Detected Stars/ {
    # 适配带/不带冒号的格式
    if ($NF ~ /^[0-9]+$/) {
        detected_stars = $NF
    } else {
        detected_stars = $(NF-1)
    }
}

# 触发输出逻辑
/AutoFocus completed/ {
    # 输出时间戳和参数,用制表符分隔,可按需调整分隔符
    printf "%s\t%s\t%s\t%s\n", timestamp, focuser_pos, avg_hfr, detected_stars
    # 重置变量,避免下一轮触发时携带旧数据
    focuser_pos = ""
    avg_hfr = ""
    detected_stars = ""
    timestamp = ""
}

使用方法

  1. 将上述脚本保存为extract_focus_data.awk
  2. 在WSL终端中运行:
awk -f extract_focus_data.awk your_imaging_log.log

关键细节说明

  • 时间戳提取:正则表达式\.log\[(.*?)\]\|INFO适配了类似20240520_imaging.log[2024-05-20 14:22:15]|INFO的日志格式,如果你的日志时间戳格式不同,只需修改这部分正则即可。
  • 参数捕获:针对不同参数的常见格式做了适配,若你的日志参数格式有差异,调整对应行的字段提取逻辑(比如$NF代表最后一个字段,$(NF-1)代表倒数第二个字段)。
  • 变量重置:每次触发输出后重置变量,确保下一组AutoFocus周期的参数不会和上一组混淆。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 00:18:17