0

ログ ファイルの正確なクエリを実行しようとしています (つまり、過去 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 "先月" Fri Jul 26 07:13:40 UTC 2013

4

1 に答える 1

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

投稿では Date を使用していないため、日付に関係なくすべてのレコードを取得します

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-*
于 2013-08-26T08:17:29.357 に答える