如何使用AWK从系统日期计算年龄>

时间:2013-01-16 17:44:11

标签: bash shell awk

  

可能重复:
  bash Calculate age of person and read to csv file?

我在CSV文件中计算出生日期的参与者年龄。我正在使用此代码,我将DOB与当前系统时间进行比较并计算年龄:

echo "Dave,ws245f,09/12/1982"|awk -F'/|,' '{b=mktime($5" "$4" "$3" 00 00 00 00");a=(systime()-b)/(365*24*60*60);a=a==int(a)?a:int(a)+1;print $0","a}' 

输出

Dave,ws245f,09/12/1982,31

期望输出

Dave,ws245f,09/12/1982,30

注意:用户在12月12日之前不是30 dd / mm / yyyy,所以这个问题是错误的。请帮忙!

2 个答案:

答案 0 :(得分:1)

试试这个:

echo "Dave,ws245f,09/12/1982"|awk -F'/|,' '{b=mktime($5" "$4" "$3" 00 00 00 00");a=(systime()-b)/(365*24*60*60);a+=a<0?-0.5:0.5;a=int(a);print $0","a}'

答案 1 :(得分:1)

如何用a=a==int(a)?a:int(a)+1替换a=a==int(a)?a:int(a)呢?如果你有0。5年,你没有1年但是0年(和6个月)

这意味着你可以说:a=int(a)