2017-03-31 121 views
1

下午好。由於許多腳本在不同的時間運行,因此我有日誌文件在整個白天被填充。這不是一個巨大的文件,但一個問題是日誌條目沒有時間戳記的時間。尾-f日誌文件的時間戳

既然如此,我通常通過PuTTY會話登錄到服務器並運行該日誌文件尾-f這樣我就可以看到,這些腳本開始。我想要做的就是改變我的尾巴-f爲每個顯示在屏幕上的項目添加一個時間戳。我已經使用了以下內容:

尾-f scheduler_ date '+%m%d%y' .LOG | SED S/^/$(日期+%H:%M%_ *)/

這裏的問題是,它使用tail命令的時間戳,而不是每一行進入該日誌文件的時間。

我查閱了一些其他的情況下,包括下面的那些,但沒有我發現提供正是我要找的。任何幫助,將不勝感激。

How to pipe tail -f into awk

https://users.cs.cf.ac.uk/Dave.Marshall/PERL/node241.html

回答

0
tail -f "scheduler_$(date '+%m%d%y').log" | perl -pe 's/^/$_=qx(date +%T_); chomp; $_/e' 

qx調用外部date +%T_命令。其輸出存儲在變量$_中。 chomp$_中刪除尾部換行符。然後$_返回成爲替代。

我假設你命令中的最後一個%是一個錯字,應該用秒代替,所以我寫了%T,這是%H:%M:%S的縮寫。

如果性能問題,你可以不喜歡這樣,每行一個新的日期工藝做:

tail ... | perl -pe 'BEGIN { use POSIX "strftime" } s/^/strftime "%T_", localtime/e'