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

如何用sed/awk/split将整数时间戳转换为时间并与日期拼接?

用awk实现时间戳与日期的拼接转换

没问题,这个需求用awk来实现最直观高效,毕竟它天生擅长处理这种结构化的列数据。下面直接上解决方案:

核心命令

awk -F ',' -v OFS=',' '{
    # 处理第一个时间戳:拆分小时和分钟,补前导0后和日期拼接
    hour1 = sprintf("%02d", int($3/100));
    min1 = sprintf("%02d", $3%100);
    ts1 = $1 " " hour1 ":" min1;
    
    # 处理第二个时间戳,逻辑和上面一致
    hour2 = sprintf("%02d", int($4/100));
    min2 = sprintf("%02d", $4%100);
    ts2 = $1 " " hour2 ":" min2;
    
    # 输出转换后的整行数据
    print $1, $2, ts1, ts2;
}' input.txt > output.txt

命令解释

  • -F ',':指定输入数据的分隔符为逗号,把每行拆分成4个字段(Date、Desc、Timestamp1、Timestamp2)
  • -v OFS=',':设置输出的字段分隔符也是逗号,保证输出格式和输入一致
  • sprintf("%02d", ...):用来给不足两位的小时/分钟补前导0,比如330拆成3和30,转成03和30
  • 最后把原日期和拼接好的时间组合,替换原来的纯数字时间戳,输出整行

测试效果

如果你的输入文件input.txt内容是:

2016-01-01, AAA, 330, 1430
2016-01-02, ABA, 130, 930

运行命令后,output.txt里的内容就是你想要的:

2016-01-01, AAA, 2016-01-01 03:30, 2016-01-01 14:30
2016-01-02, ABA, 2016-01-02 01:30, 2016-01-02 09:30

如果一定要用sed的话,虽然逻辑会绕一些,但也能实现,不过更推荐awk的方案,可读性和维护性都更好。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:33:02