从日志文件中获取最后 30 分钟
Get last 30 minutes from log file
我有一个日志文件,其中包含如下日志
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
使用 GNU date 和 GNU awk 你可以实现你想要的:
awk -v bt=$(date "+%s" -d "30 minutes ago") ' > bt {printf("%s|%s|%s\n", strftime("%F %T",), , )} ' yourfile
解释:
- 日期命令
date "+%s" -d "30 minutes ago"
获取 30 分钟前的时间戳
- 日期命令通过命令替换功能替换为它的输出
$( ... )
- awk 选项
-v
将该时间戳作为名为 bt
的变量传递给 awk 脚本
- 脚本仅打印文件中第一列 (
</code>) 中的值大于 <code>bt
所需格式的那些行
我有一个日志文件,其中包含如下日志
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
使用 GNU date 和 GNU awk 你可以实现你想要的:
awk -v bt=$(date "+%s" -d "30 minutes ago") ' > bt {printf("%s|%s|%s\n", strftime("%F %T",), , )} ' yourfile
解释:
- 日期命令
date "+%s" -d "30 minutes ago"
获取 30 分钟前的时间戳 - 日期命令通过命令替换功能替换为它的输出
$( ... )
- awk 选项
-v
将该时间戳作为名为bt
的变量传递给 awk 脚本 - 脚本仅打印文件中第一列 (
</code>) 中的值大于 <code>bt
所需格式的那些行