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

如何将Squid代理日志中的日期转换为epoch时间戳?

Squid日志日期转Epoch时间戳解决方案

效果说明

可直接将日志开头[Wed Nov 17 17:00:00 2021].014格式的时间转换为1637139600.014格式,完整保留后续日志内容,符合webalizer等工具的导入要求。

GNU/Linux 环境操作

单条日志测试

直接复制以下命令运行,可验证转换效果:

echo '[Wed Nov 17 17:00:00 2021].014   1786 10.107.54.55 TCP_TUNNEL/200 3964 CONNECT website.1.com:443 - HIER_DIRECT/104.43.65.221 -' | awk '{
    date_str = substr($0, 2, index($0, "]") - 2)
    cmd = "date -d \"" date_str "\" +%s"
    cmd | getline epoch
    close(cmd)
    sub(/^\[.*\]/, epoch)
    print
}'

批量处理日志文件

将命令中的squid.log替换为你的实际日志文件名,转换完成后结果会输出到squid_epoch.log:

awk '{
    date_str = substr($0, 2, index($0, "]") - 2)
    cmd = "date -d \"" date_str "\" +%s"
    cmd | getline epoch
    close(cmd)
    sub(/^\[.*\]/, epoch)
    print
}' squid.log > squid_epoch.log

macOS/BSD 环境操作

仅需替换date命令参数即可,批量处理命令如下:

awk '{
    date_str = substr($0, 2, index($0, "]") - 2)
    cmd = "date -j -f \"%a %b %d %T %Y\" \"" date_str "\" +%s"
    cmd | getline epoch
    close(cmd)
    sub(/^\[.*\]/, epoch)
    print
}' squid.log > squid_epoch.log

大日志量优化方案

如果日志行数超过10万行,上述逐行调用date命令的方式速度较慢,可使用gawk内置时间函数处理,效率提升10倍以上:

gawk '{
    date_str = substr($0, 2, index($0, "]") - 2)
    epoch = mktime(strptime(date_str, "%a %b %d %H:%M:%S %Y"))
    sub(/^\[.*\]/, epoch)
    print
}' squid.log > squid_epoch.log

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 15:36:04