【发布时间】:2015-10-07 19:28:28
【问题描述】:
我在 linux 服务器上有一个日志。条目格式为:
[时间戳(自 1970 年 1 月 1 日以来的秒数)] 日志数据条目
我需要一个 bash 脚本,它将获取日志文件的名称并仅输出昨天的条目(从前一天的 12:00 到 23:59:59)并将这些行输出到新文件。
我见过各种基于日期过滤日志的脚本,但到目前为止,所有这些脚本都以更易于阅读的格式处理日期戳,或者不是动态的。他们依赖硬编码的日期。我想要一个每天在 cron 作业中运行的脚本,因此它必须知道每次运行时的当前日期。
谢谢。
更新:这是我目前所拥有的。它似乎从来没有对日期进行评估。它为日期打印 00,以便一切顺利。
head -5 logfile.log | awk '{
if($1 >= (date -d "today 00:00:00" +"%s"))
print $1 (date -d "today 00:00:00" +"%s");
}'
我很困惑,即使日期计算正确,$1 也会在方括号内包含数字,而我的日期将只是数字。如果字符串的格式不同,它会正确进行比较吗?我还没有想出如何将 date 返回的日期数字放入带括号的字符串中。
【问题讨论】:
-
你会对
date -d "yesterday 00:00:00"和date -d "yesterday 23:59:59"感兴趣 -
我推荐@glennjackman的回答,结合awk conditionals
-
我建议添加日期选项
+"%s"。 -
我已经更新了我的问题,但我认为你们低估了我在 Linux 脚本编写方面的菜鸟水平。