[megoldva] Átlagolás shell scriptből, awk?

Addott a következő probléma:

http://pastebin.com/dT6Kh1La

bonnie outputból csinálok ilyesmit, többszörös futás átlagát kéne számolni oszloponként és fájlrendszerenként. Azaz kéne a reiserfs-hez tartozó oszlopok átlaga és a xfs-hez (meg persze a többihez).

Annyi könnyebbség(?) van, hogy több fájlból gyártom le ezt az outputot, azaz a különböző fájlrendszerek (és futások) adatai klüön-külön is megvannak.

Hozzászólások

Python, perl?

Elvileg eszi az awk is, de a szelet dongeted a rendszernek szvsz...

valami ilyesmi:


#! perl 

use 5.010;
use strict;
use warnings;

sub avg {
    my $n = shift;
    say join( ', ', map { sprintf '%.3f', $_ / $n } @_ ) if $n;
}

my ( $cnt, @sum );
while ( my $line = <ARGV> ) {
    chomp $line;
    if ( my @row = split /\s*,\s*/, $line ) {
        if ( length $row[0] ) {
            avg $cnt, @sum;
            undef @sum;
            $cnt = 0;
        }
        else {
            no warnings;
            $sum[$_] += $row[$_] for ( 0 .. $#row );
            $cnt++;
        }
    }
    say $line;
}
avg $cnt, @sum;

$ echo '2/5' | bc -l
.40000000000000000000

man bc sokat segít. persze csak ha telepítve van:)) de általában része a distróknak.

((Az expr nem builtin. Ellenben a let igen - let a=5*4 -, és azzal is lehet egész számokkal dolgozni. Vagy ha a let nem tetszik, akkor lehet dupla kerek zárójelek közé írni - ahogy ez a hozzászólás is van - aritmetikai kifejezéseket/értékadásokat, és azt is elintézi belsőleg egy modernebb ksh/POSIX-shell/bash. Vagy a=$(( 5 * 4 )) is írható, ha egész számokkal kell játszani.))

Gary Perlman régóta nem fejleszti már, de a honlap szerint az ismert bugok eltávolítva. Szóval szerintem alap stat dolgokra parancssorból, illetve scriptből kiváló a csomag, érdemes legalább egy pillantást vetni rá.

|STAT Statistical Data Analysis
Free Data Analysis Programs for UNIX and DOS

http://hcibib.org/perlman/stat/

Bocs, közbejött olyan dolog, ami némiképp csökkentette a probléma fontosságát :D

A megoldás az Algernon által linkelt oldalról származik:

http://pastebin.com/m1URNPbP

Ez rémlett valahonnét, de még abban se voltam biztos, hogy awk-al volt. Köszönöm a segítséget.