我有一个包含日志的日志文件,如下所示
1486307866.155 240207 68.146.231.80 TCP_MISS/200 790 CONNECT clients1.google.com:443 - DIRECT/172.217.6.238 -
1486307866.155
是unix格式的时间,对应2017-02-05 07:17:46
(格式:Y-m-d H:i:s)
我需要一个unix命令,它会在最后30分钟内以下列格式提供日志,并丢弃任何我不需要的细节。
2017-02-05 07:17:46|68.146.231.80|clients1.google.com:443
答案 0 :(得分:3)
使用GNU日期和GNU awk,您可以实现您想要的目标:
awk -v bt=$(date "+%s" -d "30 minutes ago") '$1 > bt {printf("%s|%s|%s\n", strftime("%F %T",$1), $3, $7)} ' yourfile
<强>解释强>
date "+%s" -d "30 minutes ago"
获取30分钟前的时间戳$( ... )
-v
将该时间戳作为名为bt
的变量传递到awk脚本中$1
)的值大于bt
所需的格式