筛选日志的最后分钟小时



我想过滤一个文件,并删除(或写入另一个文件(,只有日期"真实"小于日期现在的字符串,比如说 2 小时 30 分钟前(150 分钟(。我不需要可以找到绝对值"2017-03-21 04:36:19"之类的命令 - 然后删除之前的所有行。因为行不存在的可能性很大(秒,然后是分钟,此过滤器提供所有文件而不删除(。

我有下一个格式的数据:

2017-03-18 01:27:12 bla bla
2017-03-18 02:14:11 bla bla
2017-03-20 04:37:14 bla bla
2017-03-21 02:25:59 bla bla
2017-03-22 05:12:43 bla bla

时间格式:%Y-%m-%d %H:%M:%S

我在谷歌上搜索,并通过许多搜索查询在第一页上尝试所有内容。

awk -vdate=$(date -d "150 minutes ago" '+%Y-%m-%d%H:%M:%S') 
    '$1$2 >= date { print }' log

在 awk 中:

awk '
BEGIN{ now=systime() }     # now in seconds 
{
    then=$1 " " $2         # then might not be a good var name though :)
    gsub(/[-:]/," ",then)  # making mktime fit variable out of then
    then=mktime(then)      # then then to seconds
    if(then < now-604800)  # compare, 604800 is 7 days in seconds
        print              # output older than that
}' file
2017-03-18 01:27:12 bla bla
2017-03-18 02:14:11 bla bla
2017-03-20 04:37:14 bla bla

相关内容

  • 没有找到相关文章

最新更新