linux grep 日志文件中的最后 N 天

问题描述 投票:0回答:1

这是日志文件:

first second third at January 01 2024 09:54:19
first second third at January 01 2024 09:54:20
first second third at January 03 2024 09:55:19
first second third at January 04 2024 09:56:19
first second third at January 05 2024 09:58:19
first second third at January 06 2024 10:00:22

我要在文件中找到最近3天(我不是指

grep 'January [4-6] 2024
),这样每当我运行时,我都可以找到最近3天的日志。

目前我知道这只能找到确切的一天:

grep "$(date -d '5day ago' +%B\ %d\ %Y)" file

预期输出:

first second third at January 04 2024 09:56:19
first second third at January 05 2024 09:58:19
first second third at January 06 2024 10:00:22
bash grep
1个回答
0
投票

不确定是否有更简洁的方法,但是这个 liner bash 脚本可以做到这一点。

#!/bin/bash
for i in $(seq $(expr $2 - 1) -1 0); do grep "$(date -d "${i}day ago" +%B\ %d\ %Y)" $1; done

用途:

$ ./dategrep file.txt 3
first second third at January 04 2024 09:56:19
first second third at January 05 2024 09:58:19
first second third at January 06 2024 10:00:22
© www.soinside.com 2019 - 2024. All rights reserved.