日志记录 – 是否有一个工具可以提供输入流?

我遇到了很多用例,从(通常是换行符分隔的)流中获取输入并以类似顶部的方式(见top,iotop等)汇总它是非常有用的.一种即时数据透视表.

例如记录日志输入:

I heard A from unit 1 and it said "Great!" 56
I heard A from unit 2 and it said "Oh no!" 42
I heard C from unit 1 and it said "Waiting for input." 33
I heard B from unit 3 and it said "Stopped." -1
...

从这里,我们可以运行一个带有正则表达式和组指标的工具:

topify [lineout] [regex] [name #1] [group #1] [name #2] [group #2] [All other columns name position]
     where:
         lineout is the number of lines before removing it from the display
         regex is a regex of the lines to match, complete with group indicators
         name #n is a string for the title of column n
         group #n is the number of the group in the regex

例如

topify '/^I heard ([A-Z]) from unit ([1-9]) and it said "(.*)" ([-0-9]*)$/' Unit 2 Status 1 Message 3 RetVal 4

这将以交互方式显示,以便可以选择/重新排序列等:

Unit Status Message            Retval
1    C      Waiting for input. 33
2    A      Oh no!             42
3    B      Stopped.           -1

我理解它的脆弱性,但是如果它之前没有构建并且想要在我构建它之前检查,我会感到非常惊讶.我也很感激写它并不是特别复杂,所以也许每个人都已经实施了自己的解决方案……

有没有人见过像这样的工具?

(请原谅我在这里使用的标签.我知道我可能正在推动/违反某些标签的规则,但这是非常普遍的.建议欢迎.)

最佳答案
您不需要编写工具,标准的unix工具集可以很好地适应您.

#!/bin/bash
echo -e 'Unit\tStatus\tMessage\t\t\tRetval'
cat /var/log/filename | awk '{match($0,"\".*\"",a)}{print $6 "\t" $3 "\t" a[0] "\t\t" $NF}' |sort -k<fieldnum>

把它放在一个.sh文件中并运行watch.

转载注明原文:日志记录 – 是否有一个工具可以提供输入流? - 代码日志