in reply to Re: Computing results through Arrays
in thread Computing results through Arrays
After some search, I found elegant solution from Aaron, but still not able to meet my requirement.
#!/usr/bin/env perl use strict; use warnings; my $key = shift; my @cols = @ARGV; my %h; die "Usage: grp.pl id_column field1 [field2]...\n" unless @cols; # $ARGV[0] is the Base column # $ARGV[1..x] is the list of columns to add up while(<DATA>){ chomp; my @f = split; for (@cols){ $h{$f[$key]}{$_}{t} += $f[$_]; $h{$f[$key]}{$_}{n}++; } } for my $k (sort keys %h){ print $k; print "\t$h{$k}{$_}{n}\t$h{$k}{$_}{t}" for @cols; print "\n"; } __DATA__ server01: 2015-06-01T12:40:03-04:00 DB101 10 MB/sec server01: 2015-06-01T12:40:03-04:00 DB202 5 MB/sec server01: 2015-06-01T12:40:03-04:00 ASM 2 MB/sec server01: 2015-06-01T12:40:03-04:00 MYDB101 2 MB/sec server01: 2015-06-01T12:40:03-04:00 MYDB202 5 MB/sec server01: 2015-06-01T12:40:03-04:00 _OTHER_DB_ 30 MB/sec server01: 2015-06-01T12:41:03-04:00 DB101 3 MB/sec server01: 2015-06-01T12:41:03-04:00 DB202 4 MB/sec server01: 2015-06-01T12:41:03-04:00 ASM 2 MB/sec server01: 2015-06-01T12:41:03-04:00 MYDB101 9 MB/sec server01: 2015-06-01T12:41:03-04:00 MYDB202 7 MB/sec server01: 2015-06-01T12:41:03-04:00 _OTHER_DB_ 50 MB/sec server02: 2015-06-01T12:40:03-04:00 DB101 90 MB/sec server02: 2015-06-01T12:40:03-04:00 DB202 9 MB/sec server02: 2015-06-01T12:40:03-04:00 ASM 2 MB/sec server02: 2015-06-01T12:40:03-04:00 MYDB101 3 MB/sec server02: 2015-06-01T12:40:03-04:00 MYDB202 1 MB/sec server02: 2015-06-01T12:40:03-04:00 _OTHER_DB_ 90 MB/sec server02: 2015-06-01T12:41:03-04:00 DB101 1 MB/sec server02: 2015-06-01T12:41:03-04:00 DB202 4 MB/sec server02: 2015-06-01T12:41:03-04:00 ASM 2 MB/sec server02: 2015-06-01T12:41:03-04:00 MYDB101 7 MB/sec server02: 2015-06-01T12:41:03-04:00 MYDB202 7 MB/sec server02: 2015-06-01T12:41:03-04:00 _OTHER_DB_ 55 MB/sec
Got below result: ./grp.pl 2 3 ASM 4 8 DB101 4 104 DB202 4 22 MYDB101 4 21 MYDB202 4 20 _OTHER_DB_ 4 225
Could you please help in finding a way to group on time column based on Hour and print as per my requirement.
Sample of Required output:
Frequency Minute: collectionTime DB101 DB202 ASM MYDB101 MYDB202 _OTHER_DB_ 2015-06-01T12:40:03-04:00 100 14 4 5 6 140 2015-06-01T12:41:03-04:00 4 8 4 16 14 105
Frequency Hour: collectionTime DB101 DB202 ASM MYDB101 MYDB202 _OTHER_DB_ 2015-06-01T12:00:00-04:00 2015-06-01T13:00:00-04:00
|
---|
Replies are listed 'Best First'. | |
---|---|
Re^3: Computing results through Arrays
by aaron_baugher (Curate) on Jun 05, 2015 at 12:34 UTC | |
by yasser8@gmail.com (Novice) on Jun 05, 2015 at 17:33 UTC | |
by aaron_baugher (Curate) on Jun 05, 2015 at 18:44 UTC | |
by yasser8@gmail.com (Novice) on Jun 05, 2015 at 20:51 UTC | |
by aaron_baugher (Curate) on Jun 05, 2015 at 21:31 UTC | |
| |
Re^3: Computing results through Arrays
by Laurent_R (Canon) on Jun 05, 2015 at 11:00 UTC |