我有一个示例文件,其值如下所示,我想计算 [] 内部分的加权平均值
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