我有一个每日轮换的日志文件(比如主日志文件)我需要每小时捕获一次日志,然后存储每小时日志文件
实施例
当我在02/06/2017 03:41:35执行脚本命令时,我需要在02:41:35到03:41:35之间的日志
主日志文件
[02/06/2017][00:12:41][58162][3690952448][000000000000000000000000
[02/06/2017][00:12:41][58162][3690952448][000000000000000000000000
----------
[02/06/2017][03:41:35][57732][3674167040][000000000000000000000000
[02/06/2017][03:41:35][57732][3674167040][000000000000000000000000
每小时日志文件
[02/06/2017][02:41:35][58162][3690952448][000000000000000000000000
[02/06/2017][02:41:35][58162][3690952448][000000000000000000000000
----------
[02/06/2017][03:41:35][57732][3674167040][000000000000000000000000
[02/06/2017][03:41:35][57732][3674167040][000000000000000000000000
我执行了以下命令,但它没有捕获每小时日志而不是捕获所有日志
echo $(date -d'now-1 hours' +"[%d/%m/%Y][%H:%M:%S]") | cat mainlog.log
echo $(date --date='1 hours ago' +"[%d/%m/%Y][%H:%M:%S]") | cat mainlog.log
答案 0 :(得分:0)
您正在将echo
的输出汇总到cat
- 它不会过滤任何内容。 cat
将忽略来自管道(stdin)的输入,因为它正在从文件mainlog.log
读取。
您可以改为执行此操作(请注意日期格式的更改 - 我已移除%M
和%S
部分):
grep -F "$(date -d'now-1 hours' +'[%d/%m/%Y][%H:]')" mainlog.log
grep -F "$(date -d'1 hours ago' +'[%d/%m/%Y][%H:]')" mainlog.log
此处,grep
将查找日志文件中date
命令返回的字符串。