编写 shell 脚本以提取日志文件的最后 24 小时:Raspbian on Pi

Posted

技术标签:

【中文标题】编写 shell 脚本以提取日志文件的最后 24 小时:Raspbian on Pi【英文标题】:Writing shell script to extract last 24hrs of a log file: Raspbian on Pi 【发布时间】:2021-12-08 18:37:04 【问题描述】:

日志文件具有以下日期格式,我希望 grep 可以提取最后 24 小时。我设法通过grep "22/10/2021" test.txt 获取了今天的数据,但想设置 crontab 以每天执行一个脚本,该脚本只需从日志文件中选择最后 24 小时并将其放入 test.txt 文件中。

[22/10/2021, 3:12:57 pm] [Kitchen ] Received MQTT: zigbee2mqtt/0x84 
[22/10/2021, 3:13:35 pm] [Son17] Received MQTT: zigbee2mqtt/0x00 
[22/10/2021, 3:13:42 pm] [Entrance ] Received MQTT: zigbee2mqtt/0x8

【问题讨论】:

【参考方案1】:

这不是 grep 的工作,而是 awk 的工作(在这种情况下需要 GNU date 的协助):

awk -v tgt="$(date +'%F %T' --date='-24 hours')" -F'[][, /:]+' '
    
        hr = $5 + ($8=="pm" && $5<12 ? 12 : 0)
        cur = sprintf("%4d-%02d-%02d %02d:%02d:%02d",$4,$3,$2,hr,$6,$7)
    
    cur > tgt
' file

添加:

print tgt, cur, $0

如果您不确定发生了什么,请转到脚本,这应该很明显。

【讨论】:

以上是关于编写 shell 脚本以提取日志文件的最后 24 小时:Raspbian on Pi的主要内容,如果未能解决你的问题,请参考以下文章

Linux - 简易shell脚本编写,以开机日志为例,编写一个用于查看Linux进程启动的脚本

从 RPM 规范文件中提取 shell 脚本以进行静态分析

编写一个 Bash shell 脚本来读取 mongodb 日志文件并将其内容写入另一个文本文件

每天三分钟搞定linux shell脚本24 后台模式运行

shell脚本练习

shell日常脚本