如果日期早于指定列的n天,我需要帮助才能删除行。我的文件包含以下内容。从下面的文件中,我需要找到第4列中当前日期不到50天的条目并删除整行。
ABC,2017-02-03,123,2012-09-08
BDC,2017-01-01,456,2015-09-05
测试,2017-01-05,789,2017-02-03
我想要的输出如下。
ABC,2017-02-03,123,2012-09-08
BDC,2017-01-01,456,2015-09-05
答案 0 :(得分:1)
如果你有GNU awk,你可以使用这个awk脚本:
<强> script.awk 强>
BEGIN { daysDiff = 50
todayStr = strftime("%F")
split( todayStr, da, "-" )
cmpDate = mktime( sprintf("%d %d %d 0 0 0",
da[1], da[2], da[3] - daysDiff ) )
#cmpDateStr = strftime("%F", cmpDate)
#print todayStr, cmpDateStr
}
{ split( $4, da, "-" )
dt = mktime( sprintf("%d %d %d 0 0 0",
da[1], da[2], da[3] ) )
if( dt < cmpDate) {
print
}
}
像这样使用:awk -F, -f script.awk yourfile