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

Bash脚本:补全日志行首缺失日期并添加递增序号标记

日志处理awk脚本

实现逻辑

  • 识别行首符合YYYY-MM-DD HH:MM:SS,mmm格式的日志行:遇到这类行时缓存日期前缀(包含原有:00000标记),将块内计数重置为0,拼接:00000标记后输出当前行
  • 识别行首无日期的日志行:块内计数自增1,将计数格式化为5位补零的序号,拼接缓存的日期前缀后输出,完整保留行首前导空格、行内所有原始内容(包括行中出现的日期,不做修改)
  • 每遇到新的带行首日期的行,计数自动重置为00000重新开始编号

可直接执行的脚本

适配Windows 10 MingW64环境,将脚本中日志文件名替换为实际路径后,直接在对应目录下执行即可:

awk '
/^[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2},[0-9]{3}/ {
    date_prefix = substr($0, 1, 29)
    seq = 0
    printf "%s:%05d%s\n", date_prefix, seq, substr($0, 30)
    next
}
{
    seq++
    printf "%s:%05d%s\n", date_prefix, seq, $0
}
' 你的日志文件路径.txt

效果验证

针对给出的实际输入样例,脚本输出完全匹配期望结果:

2022-06-09 10:00:01,000:00000:00000 string1
2022-06-09 10:00:01,000:00000:00001        string2
2022-06-09 10:00:01,000:00000:00002 string3
2022-06-09 10:00:02,000:00000:00000 string4  
2022-06-09 10:00:02,000:00000:00001 string5
2022-06-09 10:00:02,000:00000:00002 string6
2022-06-09 10:00:03,000:00000:00000 string7
2022-06-09 10:00:04,000:00000:00000 string8
2022-06-09 10:00:05,000:00000:00000 string9

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 23:16:01