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

Bash+Busybox Awk脚本时间字段错位问题修复求助

修复Busybox Awk提取字段错位问题

问题根源

时间字段和其他目标字段(文件大小、Video FPS、napiprojekt链接)不在同一行,原脚本未做关联缓存,导致时间被捕获后要等到下一个条目才输出,最终整体下移一行。

适配Busybox Awk的修复方案

Busybox Awk仅支持POSIX标准语法,不能使用GNU Awk的扩展功能,以下两种方案根据你的1.html结构选择:


方案1:时间行与数据行非相邻(通用场景)

用变量缓存捕获到的时间,等到遇到包含所有目标数据的行时,再一起输出并清空缓存:

#!/usr/bin/awk -f
# 匹配时间行,缓存时间字符串
/[0-9]{2}:[0-9]{2}:[0-9]{2}/ {  # 替换成你实际匹配时间的正则(比如包含标签特征)
    match($0, /[0-9]{2}:[0-9]{2}:[0-9]{2}/)
    time_str = substr($0, RSTART, RLENGTH)
    next
}

# 匹配包含其他字段的行,提取并关联时间输出
/文件大小/ && /Video FPS/ && /napiprojekt/ {  # 替换成实际匹配特征
    # 提取文件大小
    match($0, /[0-9.]+\s*(MB|GB)/)
    size = substr($0, RSTART, RLENGTH)
    
    # 提取Video FPS
    match($0, /Video FPS: ([0-9.]+)/)
    fps = substr($0, RSTART + 11, RLENGTH - 11)
    
    # 提取napiprojekt链接
    match($0, /napiprojekt\.pl\/[^"]+/)
    link = substr($0, RSTART, RLENGTH)
    
    # 确保有缓存的时间才输出,避免空值
    if (time_str != "") {
        print time_str, size, fps, link
        time_str = ""  # 清空缓存,防止复用旧时间
    }
}

方案2:时间行与数据行相邻

如果时间行之后直接是包含其他字段的行,用getline读取下一行直接关联:

#!/usr/bin/awk -f
/[0-9]{2}:[0-9]{2}:[0-9]{2}/ {  # 匹配时间行
    match($0, /[0-9]{2}:[0-9]{2}:[0-9]{2}/)
    time_str = substr($0, RSTART, RLENGTH)
    
    # 读取下一行数据
    if (getline > 0) {
        # 提取文件大小
        match($0, /[0-9.]+\s*(MB|GB)/)
        size = substr($0, RSTART, RLENGTH)
        
        # 提取Video FPS
        match($0, /Video FPS: ([0-9.]+)/)
        fps = substr($0, RSTART + 11, RLENGTH - 11)
        
        # 提取napiprojekt链接
        match($0, /napiprojekt\.pl\/[^"]+/)
        link = substr($0, RSTART, RLENGTH)
        
        print time_str, size, fps, link
    }
    next
}

关键注意事项

  1. 所有正则表达式需根据1.html的实际HTML结构调整,比如时间可能在<span class="duration">标签内,需要精准匹配标签特征
  2. 全程使用POSIX Awk兼容的match()和substr()函数,避免GNU Awk独有的扩展(比如gensub())
  3. 每次输出后清空时间缓存,防止条目错位

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 14:17:04