我有一个这样的日志:

2018-09-18 03:29:38 [info]: /up request - ip: 63.143.42.249
2018-09-18 03:34:38 [info]: /up request - ip: 63.143.42.249
2018-09-18 03:39:38 [info]: /up request - ip: 63.143.42.249

我正在尝试使用bash或其他脚本语言删除14天以上的所有行。有人对怎么做有建议吗?我已经看过GNU awk,但是这些示例不是最容易运行的,而且仍然是可读的。

最佳答案

$ cat file
1818-09-18 03:29:38 [info]: /up request - ip: 63.143.42.249
2018-09-18 03:34:38 [info]: /up request - ip: 63.143.42.249

使用GNU awk和mktime()
$ awk '
BEGIN {
    now=systime()        # now in epoch time
    fn=60*60*24*14       # fortnight in seconds
}
{
    dt=$1 " " $2         # create datetime
    gsub(/[:-]/," ",dt)  # replace - and : with space for mktime() (see doc above)
}
mktime(dt)>now-fn
' file

输出:
2018-09-18 03:34:38 [info]: /up request - ip: 63.143.42.249

答应你花我省下的时间好好学习。

关于bash - 如何删除超过14天的日志文件中的行?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52378894/

10-12 00:43