【发布时间】:2016-09-08 09:28:28
【问题描述】:
所以这是我的问题:我有很大的日志文件,并且想要一个脚本来 grep 某些时间段并将它们安全到一个文件(排序),基本上
bash script.sh Jul 4 Sep 30
例如会返回
Sep 30 user0 logged in
Sep 15 user1 logged in
Aug 6 user0 logged in
Aug 3 user1 logged in
Jul 28 user2 logged in
Jul 27 user2 logged in
Jul 4 user0 logged in
我的第一次尝试是每个月和日期都有自己的变量,比如
bash script.sh Jul 4 Sep 3 0
所以我可以在开始月份(7 月)使用 $1,在开始日期(4)中使用 $2,依此类推
for logs in logs*
do
grep -qEe "^\"$1\" [\"$2\"-9]\s" $messages >> result.txt
done
获取 7 月 4 日至 9 日的所有日志,但我不知道如何获取整个时间段的日志,这些时间段不在同一个月内,也不在 1-9 或 10-19 等期间
非常感谢任何帮助!
编辑:
正如一些人所问的,这是我的日志文件的样子(只是更大且未排序):
Sep 30 user0 logged in
Jul 27 user2 logged in
Aug 6 user0 logged in
Aug 31 user1 logged in
Jul 8 user2 logged in
Sep 5 user1 logged in
Jul 27 user2 logged in
Jul 14 user0 logged in
[...]
【问题讨论】:
-
以日志文件中的几行为例。
-
这是 Gnu awk 中的一个:stackoverflow.com/questions/39220666/…
-
日志文件看起来像第二个代码段,只是有更多行(未排序)以及其他日期,例如 7 月 3 日用户 0 登录或 5 月 15 日用户 1 登录
-
@JamesBrown 我不熟悉 awk,尽管问题很相似,但没有对此解决方案的解释
-
大声笑,将您想要的开始和结束时间设置为注释,这是您的
mktime行接近尾声:mktime("2016 "mons[$1]" "$2" 00 00 00")但当然开箱即用更容易。只是想帮忙。