我得到了下面的格式,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的
任何建議
我得到了下面的格式,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的
任何建議
要篩選與所需的日誌時間線,您可以使用:
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/
添加到條件中,或者將輸出傳送給後續處理。
這篇文章被至少一個用戶標記,大概是因爲他們認爲沒有解釋的答案應該被刪除。儘管在shell問題中對線路噪聲的容忍度稍高,但這可以使用一些說明。 –
我用蟒蛇:
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)
類似的問題[這裏](http://stackoverflow.com/questions/25193654/grep-for-timestamp-and-word)...甚至更好勾選[此](http://superuser.com/a/439695/238667)'sed'解決方案。 – plesiv
我調整了今天只有線,grep $(date +「%Y-%m-%d」)/var/log/log.log | grep'OSError',我如何調整以獲得最後10 mints logs – Jecki
[獲取/提取最近3分鐘的日誌文件中的數據?]的可能的重複(http://stackoverflow.com/questions/21042534/get-extract-the-data-from-log-file-of-最後3分鐘) – Cyrus