2014-11-06 33 views
0

我有一個bash腳本和日誌文件。如何當只是最後x行 - Bash

while read -r date time ... 
do 
... 
... 
done < logfile 

它正在工作的所有線路。但日誌文件太大,有時我需要爲最後幾行運行此腳本。我怎麼能這樣做?

./script.sh -last 30 

意味着只是最後30行。

或者只是:

./script.sh 30 

回答

4

只要把tail -n 30在它的前面:

tail -n 30 logfile | while read -r date time ... 
do 
... 
... 
done 
+2

一個微小的修正:日誌文件必須被分流至尾,然後 – 2014-11-06 07:59:25

+0

確實是這樣,我忘了補充日誌文件中'尾巴'命令,謝謝! – anubhava 2014-11-06 08:00:44

+1

如果while循環的主體需要在當前shell中運行,請切換到進程替換:'while read -r date time;做...完成<(尾部-n 30日誌文件)'。 – chepner 2014-11-06 14:11:05