用于从两列中查找日期差(以天为单位)的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秒,但这与天数不同,结果也不一定是整数。