C'è uno strumento che può affiancare un stream di input?

Mi sono imbattuto in parecchi casi d'uso in cui sarebbe molto utile prendere un input da un stream (di solito newline-delimitato) e riassumere in maniera superba (vedi top, iotop, ecc.). Una sorta di tabella pivot sul volo.

ad esempio, prendere l'ingresso 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 ... 

Da questo, potremmo gestire uno strumento con indicatori di righe e gruppi:

 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 

per esempio

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

Ciò potrebbe essere visualizzato in modo interattivo, in modo tale che le colonne possono essere selezionate / riordinate, ecc .:

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

Capisco la fragilità di esso, ma sarei davvero sorpreso se non fosse stato costruito prima e volevo controllare prima di andare a costruirlo. Apprezzo anche che non è particolarmente complicato scrivere, forse tutti hanno appena implementato la propria soluzione …

Qualcuno ha visto uno strumento come questo?

(Scusate i tag che ho usato qui, so che potrei spingere / rompere le regole di alcuni tag, ma questo è molto generalizzato.

One Solution collect form web for “C'è uno strumento che può affiancare un stream di input?”

Non hai bisogno di scrivere uno strumento, il set di strumenti standard Unix può ospitarti solo bene.

 #!/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> 

Metterlo in un file .sh e eseguire l'orologio su di esso.

Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.