2015-04-12 25 views
-1

我得到了下面的格式,grep的最後10個薄荷糖錯誤日誌

2015-04-12 11:22:04,876 - Logs - Error: OSError(16, 'Error in NAS') 
2015-04-12 11:37:37,242 - Logs - Error: OSError(16, 'Error in NAS') 

我想只有最後10個薄荷糖線路時,搜索「OSERROR(‘在NAS錯誤’16)」

我不能grep和爲錯誤,但無法實施的日期和時間爲grep的

任何建議

+0

類似的問題[這裏](http://stackoverflow.com/questions/25193654/grep-for-timestamp-and-word)...甚至更好勾選[此](http://superuser.com/a/439695/238667)'sed'解決方案。 – plesiv

+0

我調整了今天只有線,grep $(date +「%Y-%m-%d」)/var/log/log.log | grep'OSError',我如何調整以獲得最後10 mints logs – Jecki

+0

[獲取/提取最近3分鐘的日誌文件中的數據?]的可能的重複(http://stackoverflow.com/questions/21042534/get-extract-the-data-from-log-file-of-最後3分鐘) – Cyrus

回答

1

要篩選與所需的日誌時間線,您可以使用:

perl -mTime::Piece=:override -F, -lane 'my $now = gmtime(); 
    print if $now - Time::Piece->strptime("$F[0]", "%Y-%m-%d %H:%M:%S")< 600' input-file 

這使用Time :: Piece-> strptime將時間戳解析成可用的支持比較的Time :: Piece對象。通過導入:覆蓋,對gmtime的調用返回一個Time :: Piece對象,以便可以進行減法並與600(10分鐘內的秒數)進行比較。爲了進一步限制輸出到符合模式的行,您可以簡單地將&& m/pattern/添加到條件中,或者將輸出傳送給後續處理。

+0

這篇文章被至少一個用戶標記,大概是因爲他們認爲沒有解釋的答案應該被刪除。儘管在shell問題中對線路噪聲的容忍度稍高,但這可以使用一些說明。 –

2

我用蟒蛇:

with open('access.log') as f: 
    for line in f: 
     logdate = datetime.strptime(line.split(',')[0], '%Y-%m-%d %H:%M:%S') 
     if logdate >= datetime.now() - timedelta(minutes=10): 
       print(line)