2013-04-24 49 views
0

開頭的日誌文件的最後一行我試圖讓單個OS命令的輸出顯示以特定字符串開頭的日誌文件的最後一行。在Linux中:打印以

所以基本上我有讀取日誌文件:

Tom 
Paul 
Tom 
Steve 
Anthony 
Tom 

我想鍵入類似這樣的命令:

tail -1 /etc/logfile | grep Steve 

,並有一個像這樣的輸出: 史蒂夫

不幸的是,tail -1的輸出只顯示日誌文件的最後一行......如果匹配。我希望它從底部到頂部(從最近到最早)搜索日誌文件,並打印與「Starts with」或grep匹配的第一個條目。謝謝。我嘗試了一堆tail,sed,cat和less的組合......但我可能只是在做一些小錯誤而忽略它。

回答

2

只要做到這一輪grep Steve /etc/logfile | tail -l

grep Steve /etc/logfile 

其他方式獲取所有的行與史蒂夫然後

tail -1 

打印上次的那些。

+0

但是如何關閉尾巴?以及如何在日誌文件中指定grep?我嘗試了grep Steve | tail -1/etc/logfile,它只是返回Tom並保持打開尾部。 – user2317377 2013-04-24 21:21:09

+0

grep完成關閉管道後尾部將關閉。我第一次錯過了日誌文件,請檢查我的正確答案。 – parkydr 2013-04-24 21:25:01

+0

所以,我有一個想法,也許我需要問一個全新的問題,但是我可以開發一個shell腳本來完成這個功能嗎?例如... Patterns = Steve,腳本中的Tom。然後腳本將遍歷每個模式,grep從日誌文件中取出模式,然後尾部-1顯示最後一個條目。這樣,它將使用一個腳本顯示我正在查找的每個名稱的最後一個條目。我知道這更復雜....我需要問一個全新的問題嗎? – user2317377 2013-04-24 21:49:19

2

如果日誌是足夠小,你不小心完全掃描,然後

grep Steve etc/logfile | tail -n 1 

會做你的工作。如果文件真的很大,你不想grep它,因爲它會影響性能,所以我會建議構建一個腳本來反向讀取文件,並在第一次出現時停止。