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

如何在AWK中转换$2位置变量存储的Unix时间戳为指定日期格式

实现方案

方案1:GNU AWK(gawk,推荐,性能更高)

GNU AWK内置strftime函数可以直接完成时间戳到指定日期格式的转换,无需调用外部进程,处理大量数据时效率优势明显:

awk -F'|' '{
  gsub(/"/, "", $2)
  ip = substr($1, 2)
  printf "\"%s - %s\"\n", ip, strftime("%d.%m.%y %H:%M:%S", $2)
}' 你的数据文件路径

你也可以直接管道输入测试效果:

echo '"1.1.1.1|1636057103"' | awk -F'|' '{gsub(/"/,"",$2);printf "\"%s - %s\"\n",substr($1,2),strftime("%d.%m.%y %H:%M:%S",$2)}'

输出完全匹配要求的格式:"1.1.1.1 - 04.11.21 22:18:23"

方案2:通用AWK(兼容BSD awk/macOS原生awk)

如果你的环境没有GNU AWK,可以调用外部date命令实现转换,注意每次调用后要关闭命令避免文件句柄泄露:

awk -F'|' '{
  gsub(/"/, "", $2)
  ip = substr($1, 2)
  cmd = "date +\"%d.%m.%y %H:%M:%S\" -d @"$2
  cmd | getline dt
  close(cmd)
  printf "\"%s - %s\"\n", ip, dt
}' 你的数据文件路径

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 03:54:02