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

如何通过Shell将文本文件中的日期格式转换为24小时制?

如何通过Shell将文本文件中的日期格式转换为24小时制?

示例输入(data.txt)

/stem/1 sts1033 08/29/2022 09:05:48 PM OX crN 51 Backup
/stem/2 sts1033 09/05/2022 09:05:18 PM OY crN 507 Backup
/stem/3 sts1033 09/12/2022 09:16:14 PM OX crN 5123 Backup

期望输出

/stem/1 sts1033 08/29/2022 21:05:48 OX crN 51 Backup
/stem/2 sts1033 09/05/2022 21:05:18 OY crN 507 Backup
/stem/3 sts1033 09/12/2022 21:16:14 OX crN 5123 Backup

解决方案:使用awk结合date命令

针对固定格式的文本,可通过awk逐行处理,并调用date命令完成时间格式转换:

GNU/Linux环境命令

awk '{
    dt = $3 " " $4 " " $5
    cmd = "date -d \"" dt "\" +\"%H:%M:%S\""
    cmd | getline new_time
    close(cmd)
    $4 = new_time
    $5 = ""
    print $0
}' data.txt

macOS/BSD环境命令

BSD系date命令参数与GNU不同,需调整格式:

awk '{
    dt = $3 " " $4 " " $5
    cmd = "date -j -f \"%m/%d/%Y %I:%M:%S %p\" \"" dt "\" \"+%H:%M:%S\""
    cmd | getline new_time
    close(cmd)
    $4 = new_time
    $5 = ""
    print $0
}' data.txt

工作原理

  1. 拼接时间字符串:提取每行的日期($3)、12小时制时间($4)和AM/PM标记($5),组合成date可解析的格式。
  2. 调用date转换:通过date命令将12小时制时间转换为24小时制的%H:%M:%S格式。
  3. 替换并输出:用转换后的时间替换原时间字段,移除AM/PM标记,打印处理后的整行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 11:15:27