是否有像“watch”这样的工具可以查看给定重复标记的循环输出

是否有像“watch”这样的工具可以查看给定重复标记的循环输出

这似乎出现过几次。我将尝试通过重复周期找出日志中的差异。例如:

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;该会话具有过滤器和触发器,以及垂直分割配置等显示设置。该文件仅包含/,?:(冒号)命令,您可以轻松编辑和调整。

相关内容