gpt4 book ai didi

linux - 基于 Unix 时间戳过滤 Linux 日志

转载 作者:太空宇宙 更新时间:2023-11-04 10:46:14 24 4
gpt4 key购买 nike

我在 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 返回的日期数字推到带括号的字符串中。

最佳答案

好吧,也许像 Dale 所说的那样使用日期。但是使用一个小技巧来提取“[”和“]”,然后比较日期。像这样:

YESTERDAY=$(date -d "yesterday 00:00:00" +"%s")
TODAY=$(date -d "today 00:00:00" +"%s")

# Combine the processing in awk
awk -v MIN=${YESTERDAY} -v MAX=${TODAY} -F["]""["] '{ if ( $2 >= MIN && $2 <= MAX) print $0}' logfile.log

关于linux - 基于 Unix 时间戳过滤 Linux 日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33000824/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com