用于从两列中查找日期差(以天为单位)的awk

用于从两列中查找日期差(以天为单位)的awk,awk,Awk,比如约会 20 20180110 20180113 100 20180110 20180115 9 20180110 20180114 期望输出 20 20180110 20180113 3 100 20180110 20180115 5 9 20180110 20180114 4 请帮助我使用awk命令。使用GNU awk、mktime()和substr()函数 输入: $ cat file 20 20180110 20180113 100 20180110 20180115 9 2018

比如约会

20 20180110 20180113
100 20180110 20180115
9 20180110 20180114
期望输出

20 20180110 20180113 3
100 20180110 20180115 5
9 20180110 20180114 4

请帮助我使用awk命令。

使用GNU awk
mktime()
substr()
函数

输入:

$ cat file
20 20180110 20180113
100 20180110 20180115
9 20180110 20180114
输出:

awk 'function df(v){ return mktime(substr(v,1,4)" "substr(v,5,2)" "substr(v,7,2)" "0" "0" "0)  }{print $0,(df($3)-df($2))/86400}' file
20 20180110 20180113 3
100 20180110 20180115 5
9 20180110 20180114 4
可读性更好:

awk '
    function df(v)
    {
      return mktime(substr(v,1,4)" "substr(v,5,2)" "substr(v,7,2)" "0" "0" "0)  
    }
    {
      print $0,(df($3)-df($2))/86400
    }
    ' file

哦,得了吧,你根本不需要对字段2和字段3中的数据提出一个全新的问题。想一想,试着自己解决它,你可能会在比发布这个问题所花费的时间更短的时间内完成它。由于闰秒和DST的原因,两个问题中被接受的答案不会给出准确的天数。想想看,两次约会午夜之间的间隔时间为86400秒,但这与天数不同,结果也不一定是整数。