【发布时间】:2015-05-03 20:54:33
【问题描述】:
我有格式的日志
##<01-Mar-2015 03:48:18 o'clock GMT> <info>
##<01-Mar-2015 03:48:20 o'clock GMT> <info>
##<01-Mar-2015 03:48:30 o'clock GMT> <info>
##<01-Mar-2015 03:48:39 o'clock GMT> <info>
我必须编写 shell 脚本来从日志文件中最后记录的数据中提取最后 5 分钟的数据,然后在其中搜索一个字符串。我是 shell 脚本的新手,我使用了 grep 命令,但它没有用。有人能帮我一下吗。 我尝试了以下脚本
#!/bin/bash
H=1 ## Hours
LOGFILE=/path/to/logfile.txt
X=$(( H * 60 * 60 )) ## Hours converted to seconds
function get_ts {
DATE="${1%%\]*}"; DATE="${DATE##*\[}"; DATE=${DATE/:/ }; DATE=${DATE//\// }
TS=$(date -d "$DATE" '+%s')
}
get_ts "$(tail -n 1 "$LOGFILE")"
LAST=$TS
while read -r LINE; do
get_ts "$LINE"
(( (LAST - TS) <= X )) && echo "$LINE"
done < "$LOGFILE"
并在运行时得到以下错误 get_ts: DATE=${DATE/:/ }: 0403-011 指定的替换对该命令无效。
【问题讨论】:
-
请edit您的问题显示您已经尝试过的内容以及一些带有相应所需输出的示例输入。
标签: shell unix awk scripting sh