编写 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进程启动的脚本