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

解析/var/log/pm-suspend.log日期并转换为Unix时间戳的方法

解析/var/log/pm-suspend.log日期并转换为Unix时间戳的方法

首先得帮你纠正个小细节:你提到的格式串里,分钟对应的占位符应该是%M而不是%m(%m是用来表示月份的),所以正确的输入格式应该是"%a %d %b %Y %I:%M:%S %p %z",这点很重要,不然转换会出错哦。

在Bash里,我们可以用GNU date命令直接完成这个转换,核心思路是用-d(或--date)参数指定输入的日期字符串,再用+%s参数输出Unix时间戳。

具体操作方式:

  • 单个日期转换:先把日志里的目标日期存到变量中,再用date命令转换:

    # 示例日期,替换为你从日志里提取的内容
    log_date="Wed 05 Jul 2023 04:55:30 PM +03"
    # 转换为Unix时间戳
    date -d "$log_date" +%s
    

    执行后会直接输出对应的时间戳(比如示例日期会返回1688560530)。如果自动识别格式有问题,也可以明确指定输入格式:

    echo "$log_date" | date -f - +"%a %d %b %Y %I:%M:%S %p %z" +%s
    
  • 批量处理日志日期:如果需要转换日志里所有符合格式的日期行,可以结合grep提取目标行,再逐个转换:

    # 提取日志中的日期行并批量转换
    grep -E '^[A-Za-z]{3} [0-9]{2} [A-Za-z]{3} [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} [AP]M [+-][0-9]{2}' /var/log/pm-suspend.log | while read -r line; do
        timestamp=$(date -d "$line" +%s)
        echo "$line -> $timestamp"
    done
    

备注:内容来源于stack exchange,提问作者ceremcem

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 07:33:09