我有以下文件:
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
$