首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在awk中使用mktime时保留毫秒信息?

如何在awk中使用mktime时保留毫秒信息?
EN

Stack Overflow用户
提问于 2013-02-21 13:37:05
回答 2查看 4.8K关注 0票数 2

我有一个格式为2012-12-20T01:16:02.05的日期字符串,我想转换为格式2011-12-20-01.16.02.050000

目前,我正在进行如下操作

代码语言:javascript
复制
format = "%F-%H.%M.%S.%N"
split(stringinput,input,"T"); 
split(input[1],date,"-")
split(input[2],time,":")

 return strftime(format,mktime(date[1] " " date[2] " " date[3] " " time[1] " " time[2] " " time[3] " " time[4]));

但我正在丢失微秒信息或毫秒信息。我怎么才能得到它。返回2011-12-20-01.16.02。%N

还有任何使字符串解析更通用的建议。目前它只支持一种格式。

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2013-02-21 20:19:45

为什么要使用mktime()?您所描述的更改只是一个文本更改:

代码语言:javascript
复制
$ echo "2012-12-20T01:16:02.05" | awk '{sub(/T/,"-"); gsub(/:/,"."); print $0 "0000"}'
2012-12-20-01.16.02.050000

我假设这只是一个打字错误,当你在你的输出中将2012更改为2011。

票数 1
EN

Stack Overflow用户

发布于 2019-05-31 05:39:52

因为我希望我的GNU日期精度与awk匹配,所以我必须执行以下操作:

代码语言:javascript
复制
x='2019-05-30 14:09:20.074'
echo $x | awk '{split($1,a,"-");;split($2,b,".");split(b[1],c,":");s=a[1]" "a[2]" "a[3]" "c[1]" "c[2]" "c[3];tt=mktime(s);print tt b[2] "000000"}'
1559196560074000000

date --date=$x +'%s%N'
1559196560074000000

现在,我能够将这两种方法达成一致,我现在可以在awk中进行比较逻辑了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14995317

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档