这似乎出现过几次。我将尝试通过重复周期找出日志中的差异。例如:
start
1
2
3
end
start
1
2
4
3
end
与其滚动浏览终端输出的页面,不如为日志提供一些结构。该工具watch
可以以一定的时间间隔运行命令,甚至可以使用 突出显示更改-d
。有没有一种简单的方法可以将程序的输出拆分为开始/结束之间的块?
只需从周期内的固定线路实时查看变化就很好了,这样我就可以发现变化。能够滚动浏览周期也很棒。
答案1
期间写了一些小东西。这不是很好,但完成了工作。
https://github.com/pknowles/watch_cycles
cat log.txt | ./watch_cycles "start"
显示,例如:
page 2/2
start
1
2
4
3
end
箭头键滚动到上一页。
答案2
一个新的实用程序pw
(管道观察)有一个功能正是用于此目的。
tail -f log.txt | pw
pw
通过内部 FIFO 缓冲区泵送数据,从中拍摄、显示快照并将其推送到 20 个屏幕深度的快照历史记录中,可以使用向上/向下箭头键 或CtrlP和轻松访问该历史记录CtrlN。
默认情况下,每 10 秒拍摄一次快照,或者每当有 1 秒读取超时时拍摄一次快照,当然这些超时可以调整。
这扳机功能会导致重复图案的不变部分冻结在屏幕上。您可以在演示视频中看到这一点。
但是,您可以pw
使用类似于 Vi 搜索的命令轻松进入触发模式:/pattern
和?pattern
。在触发模式下,每当与 FIFO 中的一行或多行发生匹配时,显示就会更新。还有很多事情要做。
您可以在启动程序之前指定触发器,如下所示。
# trigger: match foo on line 1, bar on line 3
pw -e /foo -e 3/bar
如果您按照自己喜欢的方式设置了触发器和其他设置,则可以使用 保存会话:s filename
,并使用 调用pw -f filename
;该会话具有过滤器和触发器,以及垂直分割配置等显示设置。该文件仅包含/
,?
和:
(冒号)命令,您可以轻松编辑和调整。