如果列超过n天,则删除整行

时间:2017-02-04 12:35:01

标签: shell ksh

如果日期早于指定列的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

1 个答案:

答案 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