Ich stoße auf einige Anwendungsfälle, in denen es sehr nützlich wäre, Eingaben aus einem (normalerweise durch Zeilenumbrüche getrennten) Stream zu nehmen und sie topartig zusammenzufassen (siehe oben, iotop usw.). Eine Art On-the-Fly-Pivot-Tisch.
zB Nehmen Sie die logarithmische Eingabe:
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
...
Daraus könnten wir ein Tool mit einem regulären Ausdruck und Gruppenindikatoren ausführen:
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
z.B
topify '/^I heard ([A-Z]) from unit ([1-9]) and it said "(.*)" ([-0-9]*)$/' Unit 2 Status 1 Message 3 RetVal 4
Dies würde auf interaktive Weise angezeigt, so dass die Spalten ausgewählt / neu angeordnet werden könnten usw.:
Unit Status Message Retval
1 C Waiting for input. 33
2 A Oh no! 42
3 B Stopped. -1
Ich verstehe die Sprödigkeit davon, aber ich wäre wirklich überrascht, wenn es nicht vorher gebaut worden wäre und es überprüfen wollte, bevor ich es baue. Ich schätze auch, dass das Schreiben nicht besonders kompliziert ist. Vielleicht hat jeder gerade seine eigene Lösung implementiert ...
Hat jemand ein solches Tool gesehen?
(Bitte entschuldigen Sie die Tags, die ich hier verwendet habe. Ich weiß, dass ich möglicherweise gegen die Regeln einiger Tags verstoße, aber dies ist sehr verallgemeinert. Vorschläge sind willkommen.)
awk
ist der richtige Weg ... mit einem verschlüsselten Array.
watch
Befehl.