awk 日期之间的差异

awk 日期之间的差异

我有以下文件:

1,2,3,4,5,2015-10-13,7,8,2037-01-15
1,2,3,4,5,2015-09-05,7,8,2040-01-15
1,2,3,4,5,2015-09-15,7,8,2016-06-15
1,2,3,4,5,2015-10-13,7,8,2015-07-08
1,2,3,4,5,2015-11-02,7,8,2015-08-02

使用awk,如何检查两个日期($6 和 $9)之间的天数?

对于最后一条记录,结果应该是90

可行吗?谢谢 ...

答案1

从这个问题来看,我假设您想将所有月份计为 30 天。在这种情况下,您不需要使用外部工具(如date),只需自己计算天数:

awk -F'[,-]' '{print 360*($6-$11)+30*($7-$12)+($8-$13)}' file

-7652
-8770
-270
95
90

答案2

假设 gnu awk 在这里没问题......

这是一种方法,它给出了天数差异。但这并不是您想要的(2015-11-02 到 2015-08-02 是 92 天,您想要的结果是 90)。

$ awk -F, '{ gsub(/-/," ",$0); print (mktime($6 " 00 00 00")-mktime($9 " 00 00 00"))/86400 }' file.txt
-7765.04
-8898.04
-274
97
92.0417
$

相关内容