如果列早于 n 天,则删除整行

Delete entire row if a column is older than n days

如果指定的 column.My 文件中的日期早于 n 天,我需要帮助来删除一行,文件包含以下内容。从下面的文件中,我需要找出第 4 列中距当前日期不到 50 天的条目并删除整行。

美国广播公司, 2017-02-03, 123, 2012-09-08

英国广播公司, 2017-01-01, 456, 2015-09-05

测试,2017-01-05,789,2017-02-03

我想要的输出如下。

美国广播公司, 2017-02-03, 123, 2012-09-08

BDC, 2017-01-01, 456, 2015-09-05

如果你有可用的 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( , 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