2014-04-08 55 views
0

我需要搜索的日誌文件與2014年4月1日16日期時間戳格式:45:22.084使用AWK日期時間戳搜索日誌文件生成語法錯誤

我從管道到grep的awk的,因爲日誌文件有時間戳的標題行,然後是詳細信息,我只需要檢查標題行。

當我使用字符串運行awk時,它可以工作。

grep "2014-04-01" log |awk -F"\t" '{if ($1>"2014-04-01 14:02:41.213") print $1,$5;}' 

2014年4月1日16:45:22.084 Generic_Remote_Exception

當我嘗試使用日期變量,我得到一個語法錯誤。

grep "2014-04-01" log |awk -F"\t" -vDate= "`date -d 'now-5 minutes' +%Y-%m-%d" "%H:%M:%S.%N`" '{if ($1>Date) print $1,$5;}' 

AWK:2014年4月8日09:30:31.061837000 AWK:^語法錯誤

爲什麼AWK生成錯誤?

+2

'Date ='後面有一個空格,將其刪除。如果您發佈了更多的日誌日期,我相信我們可以幫助您將所有內容全部放在一個'awk'中,並擺脫'grep'' – Jotne

+0

使用'$(...)'而不是'\'... \ '。反引號[不推薦](http://wiki.bash-hackers.org/scripting/obsolete)語法,但是,它們的使用不會導致錯誤。 –

回答

2

更改此:

awk -F"\t" -vDate= "`date -d 'now-5 minutes' +%Y-%m-%d" "%H:%M:%S.%N`" '{if ($1>Date) print $1,$5;}' 

awk -F\t -v Date="$(date -d -5min +%Y-%m-%d" "%H:%M:%S.%N)" '$1>Date {print $1,$5}' 
0
awk -v Date="`date`" 'script' 

解釋script之前設置AWK可變日期到外殼命令date的輸出。

awk -v Date= "`date`" 'script' 

設置AWK變量Date爲空字符串,然後試圖解釋的date輸出作爲它,如果是awk腳本,因此語法錯誤,因爲2014-04-08 09:30:31.061837000不是一個語法正確的awk腳本。

相關問題