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

如何用Perl/BSD awk将数据流中UNIX时间戳转为ISO8601格式

解决方案

推荐方案(Perl 单行脚本,无外部调用,效率更高)

直接使用Perl内置的POSIX::strftime处理时间转换,无需调用外部命令,处理大流量输出也不会卡顿:

env TZ=GMT-3 perl -MPOSIX=strftime -pe 's/"(\d{10})"/sprintf("\"%s\"", strftime("%Y-%m-%dT%H%M%S%z", localtime($1)))/ge'

BSD Awk 方案

如果你更习惯用awk,也可以用BSD awk搭配系统自带的date命令实现:

env TZ=GMT-3 awk '{
    while(match($0, /"([0-9]{10})"/, m)) {
        cmd = "date -r " m[1] " +%Y-%m-%dT%H%M%S%z"
        cmd | getline dt
        close(cmd)
        sub(/"[0-9]{10}"/, "\"" dt "\"")
    }
    print
}'

使用方法

直接把脚本接在你原来的curl命令后面管道运行即可:

curl --write-out '\n%{http_code}\t=%{time_total}s\n' 你的API地址 | 上面选择的脚本命令

说明

  • 匹配规则严格识别被双引号包裹的10位纯数字,不会误改其他字段内容
  • 时区固定为GMT-3,输出格式完全符合示例要求
  • 两种方案都完全依赖系统默认预装组件,无需安装任何第三方依赖

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 23:15:05