awk按关键字grep最近30天的日志

时间:2013-08-26 07:16:09

标签: bash awk grep

尝试对日志文件进行精确查询(即过去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

1 个答案:

答案 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-*