2013-03-23 68 views
0

有日誌文件,其中有模式檢查模式日期和時間後

----- Fri Mar 22 20:11:50 2013 
statement 1 
statement 2 
statement 3 
. 
. 
. 
No errors 
statement 10 
statement 11 
statement 12 

我需要搜索產生的當前日期和時間日誌,並尋找在日誌文件模式「無錯誤」。我怎樣才能做到這一點 ? 小記:日誌文件將包含多個日誌條目。

我試圖

[ `grep -c "No Errors" /usr/apps/logs/errrors.log` eq 1 ] 
echo "No error" 

問題是它沒有回聲「沒有錯誤」,因爲它可能有一個以上的比賽在這裏。那麼我如何在日誌文件中的某個檢查時間和日期之後找到一個模式 ?

謝謝!

回答

0

在兩個單獨的命令中進行管理。命令的第一部分將打印任一日期的匹配項或字符串「無錯誤」。第二部分將刪除重複的相鄰輸出行,以便在每個日期之間最多打印一個「無錯誤」。

grep -ei '[0-9]:[0-9][0-9]:[0-9][0-9] 20[0-9][0-9]' -ei 'No errors' | uniq 

,你得到的將是該日期後的日期,然後提示「無差錯」的列表,如果有串在該日期之後「沒有錯誤」的任何occurence(S)和之前的輸出包含在日誌文件中的下一個日期。

我不確定您的文件是否包含「沒有錯誤」或「沒有錯誤」,因此請確保我的命令已更新爲您正在搜索的內容。另外,請確保您更改該命令,以便它接收來自您正在使用的日誌文件的輸入。例如,

cat logfile | grep -ei ...... 
0

您可以使用像awk一個工具,您可以定義記錄分隔符和字段分隔符。我無法測試,因爲您沒有提供太多的樣本輸入,但類似這樣的東西可能會起作用:

awk -v RS='----- ' -v FS='\n' '/No errors/ {print "No errors on " $1}' logfile