我有两个文件。
$cat file1.txt
1 5
2 5
3 6
4 7
5 5
8 2
我想报告files2.txt中指定的$ 1列间隔的$ 2列的平均值。
$cat file2.txt
range1 1 3
range2 5 7
range3 2 5
range4 6 8
range5 6 7
期望的输出:
range1 1 3 5.333
range2 5 7 1.667
range3 2 5 5.75
range4 6 8 0.667
range5 6 7 0
请注意,$ 1中的值是连续的整数,但可能缺少某些数字(例如6和7)。在这种情况下,$ 2列中的值假定为0。
理想情况下,我想要一个awk解决方案。非常感谢
答案 0 :(得分:2)
试试这个:
awk '
NR==FNR {
a[$1] = $2;
next
}
{
sum = count = 0;
for(x=$2; x<=$3; x++) {
sum+=a[x]
}
printf "%s\t%.3f\n", $0, sum/(($3-$2)+1)
}' file1 file2
range1 1 3 5.333
range2 5 7 1.667
range3 2 5 5.750
range4 6 8 0.667
range5 6 7 0.000