Addott a következő probléma:
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.
- 1606 megtekintés
Hozzászólások
Python, perl?
Elvileg eszi az awk is, de a szelet dongeted a rendszernek szvsz...
- A hozzászóláshoz be kell jelentkezni
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;
- A hozzászóláshoz be kell jelentkezni
Ezalapjan szerintem meg tudod oldani, eleg egyertelmu ott a pelda.
--
|8]
- A hozzászóláshoz be kell jelentkezni
Hol akadtal el?
- A hozzászóláshoz be kell jelentkezni
$ 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.
- A hozzászóláshoz be kell jelentkezni
(Ha egesz szamok kellenek, akkor expr is jo lehet, es az meg builtin is)
--
|8]
- A hozzászóláshoz be kell jelentkezni
$ echo 'scale=2; 2/5' | bc -l
.40
- A hozzászóláshoz be kell jelentkezni
Mondom egesz, es builtin. .40 nem egesz, es bc sem builtin.
--
|8]
- A hozzászóláshoz be kell jelentkezni
telíteni tudsz?
olvasni tudsz?
akkor telíts, és olvass man-t, v. nézd meg a wikiben, v. valahol. nem olyan bonyolult:))
$ echo '12/5' | bc
2
$ echo 'scale=2; 12/5' | bc
2.40
$ echo '(12+12+12)/3' | bc
12
$ echo 'scale=2; (12+12+12)/3' | bc
12.00
$ echo '12+12+12/3' | bc
28
$
- A hozzászóláshoz be kell jelentkezni
Tudom, hogy mikent mukodik a bc. Nem a bc-rol beszeltem. Javaslom teljes egeszeben olvasd el amit irtam.
--
|8]
- A hozzászóláshoz be kell jelentkezni
((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.))
- A hozzászóláshoz be kell jelentkezni
(oh, franc, rossz shellt neztem. Akkor $(()), a lenyeg kb ugyanaz)
--
|8]
- A hozzászóláshoz be kell jelentkezni
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
- A hozzászóláshoz be kell jelentkezni
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:
Ez rémlett valahonnét, de még abban se voltam biztos, hogy awk-al volt. Köszönöm a segítséget.
- A hozzászóláshoz be kell jelentkezni
awk elott greppelni... jujj.
awk '/,'${HOSTNAME}',/ { print ... }'
Amugy a ket (6-7) blokk mehet egybe, pontosvesszovel kell az utasitasokat elvalasztani.
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal
- A hozzászóláshoz be kell jelentkezni