在 `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
的命令)"blank lines" 之后,比方说, 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行之间有超过2秒的间隔)
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秒内没有输出;您可以更频繁地检查最后一行并保留时间戳;但这需要更多代码...
- 这取决于所有行都是唯一的;这对你来说是合理的;因为每一行都有时间戳
awk -F'[][\- ,:]+' '1'
以上将在 ]
、[
、-
、,
、</code> 和 [=17= 上拆分字段], 这样每个字段如下所述:</p>
<pre><code>[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= }
prev + 2000 < curr { print "" } # Print empty line if two seconds
# have passed since last record.
{ prev=curr } 1'
有一个日志文件,例如:
[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
的命令)"blank lines" 之后,比方说, 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行之间有超过2秒的间隔)
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秒内没有输出;您可以更频繁地检查最后一行并保留时间戳;但这需要更多代码...
- 这取决于所有行都是唯一的;这对你来说是合理的;因为每一行都有时间戳
awk -F'[][\- ,:]+' '1'
以上将在 ]
、[
、-
、,
、</code> 和 [=17= 上拆分字段], 这样每个字段如下所述:</p>
<pre><code>[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= }
prev + 2000 < curr { print "" } # Print empty line if two seconds
# have passed since last record.
{ prev=curr } 1'