2016-06-27 25 views
1

grep的消息我已經發出日誌,在此格式的應用程序:了一個小時

00:00:10,799 ERROR [stderr] (http-prfilrjb08/10.1.29.34:8180-9)  {}:return code: 500 

我需要監視在日誌文件中新的錯誤,發生在最後一小時。看看一些教程我已經拿出以下grep:

grep "^$(date -d -1 hour +'%H:%M:%S')" /space/log/server.log | grep 'ERROR' 

但是沒有什麼是grepped!你能幫我解決它嗎? 謝謝!

+0

我想你需要在'-d' - >'date -d'-1 hour'+'%H:%M:%S''後面加引號。然而,擁有一個合適的[mcve]將是一件好事。 – fedorqui

回答

4

您需要-1 hour引號包圍,你也想從輸出去除秒和分(當前解決方案只對第一第二1小時發現數據前):

grep "^$(date -d '-1 hour' +'%H')" /space/log/server.log | grep 'ERROR' 
+0

感謝您的回覆!它的工作 – Carla

2
grep -E "^($(date -d '-1 hour' '+%H')|$(date '+%H')):[0-9]{2}:[0-9]{2}" /space/log/server.log | grep 'ERROR' 

讓我們看看部分

grep -E告訴grep來使用擴展的正則表達式(所以我們不需要逃避所有這些括號)

date -d '-1 hour' '+%H'打印上一小時。同樣date '+%H'打印當前小時。這些需要在運行時進行評估並捕獲到一個捕獲組中,這就是爲什麼我們有(date|date)結構(您可能需要一些數據不僅來自前一小時,而且還有當前運行小時)。

接下來,您需要指定您確實在查看時間戳。我們使用:來劃分小時,分鐘和秒。一個兩位數的數字組可以與[0-9]{2}正則表達式匹配(這基本上與[0-9][0-9]相同,但更短)

你走了。

Ps。我建議sed。

+0

也謝謝你的解釋 – Carla