簡體   English   中英

在`tail -f`中自動插入空行

[英]Auto-insert blank lines in `tail -f`

有一個日志文件,如:

[DEBUG][2016-06-24 11:10:10,064][DataSourceImpl] - [line A...]
[DEBUG][2016-06-24 11:10:10,069][DataSourceImpl] - [line B...]
[DEBUG][2016-06-24 11:10:12,112][DataSourceImpl] - [line C...]

tail -f實時監控下,是否可以自動插入(通過命令我們將管道到tail )“空行”,比方說,2秒不活動?

預期結果:

[DEBUG][2016-06-24 11:10:10,064][DataSourceImpl] - [line A...]
[DEBUG][2016-06-24 11:10:10,069][DataSourceImpl] - [line B...]
---
[DEBUG][2016-06-24 11:10:12,112][DataSourceImpl] - [line C...]

(因為兩條連續線之間的間隙超過2秒)。

awk -F'[][\\- ,:]+' '1'

以上將在分割字段][-, : ,以便每個字段如下所述:

[DEBUG][2016-06-24 11:10:10,064][DataSourceImpl] - [line A...]
 22222  3333 44 55 66 77 88 999  ...

然后,您可以連接一些字段並使用它來測量時差:

tail -f input.log | awk -F'[][\\- ,:]+' '{ curr=$3$4$5$6$7$8$9 }
                      prev + 2000 < curr { print "" } # Print empty line if two seconds 
                                                      # have passed since last record.
                                         { prev=curr } 1'

tail沒有這樣的功能。 如果你想要,你可以實現一個程序或腳本來檢查文件的最后一行; 像(偽代碼)

previous_last_line = last line of your file
while(sleep 2 seconds)
    {
    if (last_line == previous_last_line)
        print newline
    else
        print lines since previous_last_line
    }

兩個評論:

  • 這將導致你在2秒內沒有輸出; 你可以更頻繁地檢查最后一行並保留時間戳; 但這需要更多代碼......
  • 這取決於所有線條都是獨特的; 這在你的情況下是合理的; 因為你在每一行都有時間戳

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM