以下の値を持つサンプルファイルがありますが、[]内の部分の加重平均を計算したいと思います。
6708.1717,07/15/2015,[6708:2],[6708.1609:3],[6708.5:5]
3352.130000000,07/15/2015,[3352:4]
6708.1717,07/15/2015,[6708:2],[6708.1609:2],[6708.5:5]
最初の行のサンプル出力は次のようになります。
6708.1717,07/15/2015, [(6708 x 2 + 6708.1609 x 3 + 6708.5 x 5)/2+3+5]
[]のある列の数は行ごとに異なります。計算する
方法はありますか?awk
答え1
私は書くことができます
awk -F, -v OFS=, '{
n=0
sum=0
for (i=3; i<=NF; i++) {
split( substr( $i, 2, length($i)-2 ), a, /:/)
sum += a[1]*a[2]
n += a[2]
}
print $1, $2, sum/n
}' file
生産する
6708.1717,07/15/2015,6708.3
3352.130000000,07/15/2015,3352
6708.1717,07/15/2015,6708.31