[RndTbl] Looking for some AWK magic
Sean Cody
sean at tinfoilhat.ca
Thu Sep 21 12:22:48 CDT 2017
On 2017-09-21 12:01, Wyatt Zacharias wrote:
> So I've got a storage appliance that I'm trying to generate a growth
> chart on, but the output format of the statistics is not in a usable
> format.
>
> The output looks like this, with each day of the week in a column, and
> then 6 rows of data underneath, and then it repeats.
>
> -2- -3- -4- -5- -6- -7- -8-
> 5827.1 6865.6 3551.2 4649.5 4006.6 15803.5 10305.0
> 199.4 353.4 175.9 200.7 172.5 584.0 554.2
> 9.9x 4.4x 6.4x 5.9x 6.3x 5.6x 5.3x
> 3.0x 4.4x 3.2x 3.9x 3.7x 4.9x 3.5x
> 29.2x 19.4x 20.2x 23.2x 23.2x 27.1x 18.6x
> 96.6 94.9 95.0 95.7 95.7 96.3 94.6
>
> -23- -24- -25- -26- -27- -28- -29-
> 2798.2 2235.3 2357.9 4701.3 9074.3 13796.5 11705.7
> 86.7 74.1 131.6 178.1 449.3 483.5 473.7
> 11.4x 12.0x 7.0x 8.1x 3.9x 6.3x 6.7x
> 2.8x 2.5x 2.6x 3.2x 5.2x 4.6x 3.7x
> 32.3x 30.2x 17.9x 26.4x 20.2x 28.5x 24.7x
> 96.9 96.7 94.4 96.2 95.0 96.5 96.0
>
> -30- -31- -1- -2- -3- -4- -5-
> 2798.6 2274.5 2325.8 2472.1 2526.0 13955.3 11224.2
> 86.7 88.9 145.2 115.2 105.6 497.9 432.4
> 10.8x 10.1x 7.4x 8.1x 9.8x 6.2x 6.9x
> 3.0x 2.5x 2.2x 2.7x 2.4x 4.5x 3.8x
> 32.3x 25.6x 16.0x 21.5x 23.9x 28.0x 26.0x
> 96.9 96.1 93.8 95.3 95.8 96.4 96.1
>
> Is there a way I can get awk to process 6 rows of each column at a
> time?
>
Not particularly... awk is a single line filter, doing multi-line leads
to madness.
But you can use the line number to gauge/tract state.
Crappy awk pseudo code...
BEGIN {state counter = 0 }
^- { Line starts with ^- it's a header line, set state counter to 0. }
^[0-9]+ & state counter == 0 { next line starts with a number and state
counter is 0 so do first line thing, increment state counter }
^[0-9]+ & state counter == 1 { next line starts with a number and state
counter is 1 so do second line thing, increment state counter }
...
^[0-9]+ & state counter == 5 { next line starts with a number and state
counter is 5 so last line in the sequence, set counter to 0. }
repeat
END { output your fancy stats }
You can then use a data structure like an array or a 2d matrix to handle
the data you output at the end.
(PS. Yes I know you can nest the stanzas but trying to keep the
suggestion clear)
--
Sean
More information about the Roundtable
mailing list