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