【问题标题】:UNIX programmingUNIX 编程
【发布时间】:2010-07-26 14:22:32
【问题描述】:

您好,我想将 UNIX 日期转换为正常日期 (YYYY-MM-DD)

22222,0,0,0,14387
33333,0,0,0,14170
44444,0,0,0,14244
55555,0,0,0,14190
66666,0,0,0,14528
77777,0,0,0,14200
88888,0,0,0,0
99999,0,0,0,0

这里第 5 列代表 UNIX 日期

我想转换成

22222,0,0,0,2009-05-23

以及类似的剩余行

任何人都可以帮助我

【问题讨论】:

标签: solaris unix-timestamp sunos


【解决方案1】:

一个简单的 awk 脚本应该可以做到这一点

awk -F, 'BEGIN{OFS=","} { print $1,$2,$3,$4,strftime("%Y-%m-%d",$5) }' myFile.txt

干杯。

编辑:
您没有使用 unix 时间戳,但我检查了您的数据,看来您使用的是自纪元以来的天数,所以这里是:

awk -F, 'BEGIN{OFS=","} { print $1,$2,$3,$4,strftime("%Y-%m-%d",$5*86400) }' myFile.txt

【讨论】:

  • @roe,这不正确。是否甚至可以仅使用一小部分从一个纪元中提取年份?
  • @Anders;你是对的......好吧,如果它实际上是unix时间戳,那将是正确的,但它们不是......:P
  • @roe,你的输出给了我22222,0,0,0,1970-01-01,看看操作员的问题,这相隔几年。编辑:是的,我也是这么想的。
  • @roe,我会给你两票,因为你真的费心去研究失败的原因。
  • 9842631423,0,0,0,nawk:调用未定义函数strftime
猜你喜欢
  • 2011-02-06
  • 1970-01-01
  • 2011-05-29
  • 1970-01-01
  • 2011-11-21
  • 2016-03-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多