尝试对日志文件进行精确查询(即过去30天内的所有跳出)。
我找不到2个因素,我认为stdin不会拉zcat信息,我认为将变量传递给awk时也会出错。
home # lastDate=$(date -d "last month" 2>&1 {$1, $2, $3}) | cat /var/log/messages | zcat /var/log/messages-* | awk '$0>=from&&$0<=to' from='{ print date +"%m-%d"}' to=$lastDate '{print to}' | grep -i reject
awk: fatal: cannot open file `{print to}' for reading (No such file or directory)
破碎的地方:
lastDate=$(date -d "last month" 2>&1 {$1, $2, $3})|awk '{print lastDate}'
no error, no output
date -d“上个月” 7月26日星期五07:13:40 UTC 2013
答案 0 :(得分:0)
请勿使用背部抽搐,请使用括号:
awk 'tolower($0)~/reject/ && $0~Date' Date=$(date -d'now-30 days' +[%d/%b:%H:%M:%S) /var/log/messages && zcat /var/log/messages-*
在您的帖子中,您不使用日期,因此您可以获得所有记录,无论日期是什么
PS更新您的帖子#1,而不是发布新内容。
编辑: 如果您喜欢一系列日期,而不是在30天前的某一天使用,请尝试以下方法:
awk 'tolower($0)~/reject/ && $0>=from && $0<=to' from=$(date -d'now-30 days' +[%d/%b:%H:%M:%S) to==$(date +[%d/%b:%H:%M:%S) /var/log/messages && zcat /var/log/messages-*