我有一个看起来像这样的日志:
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 
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用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 
Run Code Online (Sandbox Code Playgroud)
使用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
Run Code Online (Sandbox Code Playgroud)
输出:
2018-09-18 03:34:38 [info]: /up request - ip: 63.143.42.249 
Run Code Online (Sandbox Code Playgroud)
承诺你花时间我救你学习awk.
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           130 次  |  
        
|   最近记录:  |