编辑:
我后来在正确的 place : stackexchange site only for Linux/Unix
上发布了这个问题:EndEdit中
在执行tail -f error.log
时,如何在没有任何内容被追加到文件3秒后以编程方式插入换行符?
(显然,一旦添加了一个换行符,就不应该添加其他换行符,直到其他行文本被添加到日志文件中)
例如,这些行被添加到error.log:
foo
bar
boo [[wait 4 seconds]]
2far
2foo
2bar
2boo [[wait 40 seconds]]
2far
[[等待X秒]]是下一行要延迟的延迟(这不是输入文本的一部分)
这将是控制台中的输出:
foo
bar
boo
2far
2foo
2bar
2boo
2far
答案 0 :(得分:1)
while read -r line;do n=$(date +%s); [ $nn -lt $(( n - 3 )) ] && echo ; nn=$n; echo $line; done < <(tail -f /path/to/somelogfile)
这里,&#39; tail -f&#39;的输出。使用Process Substitution将命令传递给while循环。 while循环逐行读取尾部的输出并打印它,同时保持上次读取行的时间的时间戳。如果上次保存的时间戳超过3秒,它将打印一个空行。请注意,空行将在打印下一行之前的时间打印,而不是在上次更新后经过3秒后立即打印。