我想从日志(log)文件中获取给定日期范围内的值计数.我的日志(log)文件是这样的.
values.log
2022-01-01-10:01 AAA-passed
2022-01-01-11:05 AAA-passed
2022-01-01-12:01 AAA-passed
2022-01-01-13:05 AAA-passed
2022-01-02-12:01 AAA-failed
2022-01-03-13:05 AAA-failed
我try 了以下方法来获取给定时间范围内的值计数.
t1='2022-01-01-10:01'
t2='2022-01-03-13:05'
pass=$(awk '/^'$t1.*'/,/'$t2.*'/' values.log | grep -w "AAA-passed" | wc -l)
echo $pass
只有在日志(log)文件中输入了准确的时间戳时,此方法才有效.但如果我们给出一个未输入日志(log)文件的时间范围,该方法不起作用,也不会给出答案,
例如,如果我们给出
t1='2022-01-01-10:00'
t2='2022-01-03-14:00'
这没有给出任何答案,因为t1和t2的这些精确值没有输入到日志(log)文件中.我也try 了很多其他方法,但都不管用.有人能帮我弄清楚这件事吗.提前感谢..!
编辑-
我找到了一个相关的答案,
awk -v 'start=2018-04-12 14:44:00.000' -v end='2018-04-12 14:45:00.000' '
/^[[:digit:]]{4}-[[:digit:]]{2}-[[:digit:]]{2} / {
inrange = $0 >= start && $0 <= end
}
inrange' < your-file
这种方法对我来说很有效,但我不硬编码t1和t2的值
t1=$(date -d "${dtd} -7 days" +'%Y-%m-%d-%R')
t2=$(date '+%Y-%m-%d-%R')
Result time format - 2022-07-05-12:15
Required time format - 2018-04-12 14:44:00.000
那么,我如何编辑上述表达式以获得所需时间格式的日期时间呢.