Me deparo com alguns casos de uso em que seria muito útil receber uma entrada de um fluxo (normalmente delimitado por nova linha) e resumi-lo de uma forma semelhante à de um topo (veja acima, iotop, etc). Uma espécie de tabela dinâmica on-the-fly.
por exemplo. Pegue a entrada log-esque:
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
...
A partir disso, podemos executar uma ferramenta com indicadores de regex e de grupo:
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
por exemplo,
topify '/^I heard ([A-Z]) from unit ([1-9]) and it said "(.*)" ([-0-9]*)$/' Unit 2 Status 1 Message 3 RetVal 4
Isso seria exibido de forma interativa, de modo que as colunas pudessem ser selecionadas / reordenadas, etc.:
Unit Status Message Retval
1 C Waiting for input. 33
2 A Oh no! 42
3 B Stopped. -1
Eu entendo a fragilidade disso, mas eu ficaria realmente surpreso se não tivesse sido construído antes e quisesse verificar antes de começar a construí-lo. Eu também aprecio que não seja particularmente complicado escrever, então talvez todos tenham implementado sua própria solução ...
Alguém viu uma ferramenta como essa?
(Por favor, desculpe as tags que eu usei aqui. Eu sei que posso estar empurrando / quebrando as regras de algumas tags, mas isso é muito generalizado. Sugestões bem-vindas.)