一个列表如下:
0.12 1
0.23 1
0.78 2
0.979 2
0.345 1
0.25 2
0.88 3
0.96 3
.
.
.
要求:以空格为分隔符,把第二字段相同的行的第一字段相加求平均值。
我想应该使用awk,但单独的使用awk似乎又达不到最终目的。想了一会,我便通过shell结合awk实现了要求所要实现的功能。
#!/bin/bash
awk '{print $2}' list|uniq -c >linshi
while read count second; do
awk -v a=$second -v b=$count '$2==a{sum += $1};END {print sum/b}' list
done < linshi
rm -f linshi
如果读者有更简洁的方法,或直接使用awk便能实现要求,欢迎指正!
本文出自 “发现生命中的美丽” 博客,转载请与作者联系!