首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从两列中查找日期差异的awk

从两列中查找日期差异的awk
EN

Stack Overflow用户
提问于 2018-01-15 05:57:16
回答 3查看 696关注 0票数 0

我有以下格式的文件-

代码语言:javascript
运行
复制
datecolumn1     datecolumn2
20140202 20180113
20140202 20180113
20140202 20180113
20131202 20180113
20140331 20180113

我想减去3-2美元才能找到总天数。产出如下-

代码语言:javascript
运行
复制
20180113 20180115 3.

请帮助使用awk命令。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-01-15 07:36:26

遵循awk可能会帮助您在相同的日期之间的天数差异(格式,您已张贴在您的帖子)。此外,这段代码也是在GNU awk中创建和测试的。

代码语言:javascript
运行
复制
TZ=PST awk '
FNR>1{
  split($1,date,"");
  split($2,date1,"");
  print (mktime(date1[1] date1[2] date1[3] date1[4]" " date1[5] date1[6]" " date1[7] date1[8] " " "00 00 00")\
  -mktime(date[1] date[2] date[3] date[4]" " date[5] date[6]" " date[7] date[8] " " "00 00 00"))\
  /(24*60*60);
}'   Input_file
票数 0
EN

Stack Overflow用户

发布于 2018-01-15 10:51:44

使用GNUawk、mkdateFIELDWIDTHS来分离日期部分。由于$4是一个空格,因此在mktime中它被滥用为一个空格,因为它比" "更短(:

代码语言:javascript
运行
复制
$ awk '
BEGIN{ FIELDWIDTHS="4 2 2 1 4 2 2" }
{
    print $0,(mktime($5 $4 $6 $4 $7 " 0 0 0")-mktime($1 $4 $2 $4 $3 " 0 0 0"))/86400
}' file
datecolumn1     datecolumn2 0
20140202 20180113 1441
20140202 20180113 1441
20140202 20180113 1441
20131202 20180113 1503
20140331 20180113 1384.04  # wut?
20180113 20180115 2

(我不太确定20180113 20180115是否应该像示例中那样生成3,或者按照数学指令生成2。)

票数 1
EN

Stack Overflow用户

发布于 2018-01-15 14:24:36

代码语言:javascript
运行
复制
$ cat tst.awk
function secs(d) { return mktime(substr(d,1,4)" "substr(d,5,2)" "substr(d,7)" 0 0 0") }
{ print $1, $2, int((secs($2) - secs($1)) / (24 * 60 * 60)) }

$ awk -f tst.awk file
datecolumn1 datecolumn2 0
20140202 20180113 1441
20140202 20180113 1441
20140202 20180113 1441
20131202 20180113 1503
20140331 20180113 1384

请注意,上面是一个近似的天数差,但它没有准确地解释DST。我只是使用它,因为你似乎对这个近似很满意,但是如果你想要这个结果是准确的,你需要一个不同的时间计算,包括使用strftime("%j")作为开始日期,该年的最后一天减去那个值(得到那年剩下的天数),每年的最后一天在开始日期和结束日期之间,以及一年的最后一天。

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

https://stackoverflow.com/questions/48257629

复制
相关文章

相似问题

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