如何在for
脚本中使用while
或awk
循环添加(第二列上的数字)?
$1
处的数字是随机的并且按递增顺序排列:
这意味着每次迭代时增量为0.1。
1.0 1
1.1 3
1.2 4
1.3 3
1.4 5
1.5 7
1.6 10
2.0 6
2.1 9
2.2 2
2.3 8
2.4 0
3.0 4
3.2 5
4.0 8
4.1 6
5.0 7
6.0 6
7.0 7
8.7 9
9.8 2
答案 0 :(得分:2)
在这里,我将每个$ 1乘以10以避免problems with imprecise decimal numbers。
awk -v max=$(tail -1 data | awk '{print $1*10}') '
{n = $1 * 10}
NR==1 {min = n}
{
for (i=min; i<=(max-10); i++) {
if (i <= n && n <= (i+10)) {
sum[i, i+10] += $2
}
}
}
END {
for (key in sum) {
split(key, a, SUBSEP)
printf "[%.1f,%.1f] = %d\n", a[1]/10, a[2]/10, sum[key]
}
}
' data | sort -n
输出
[1.0,2.0] = 39
[1.1,2.1] = 47
[1.2,2.2] = 46
[1.3,2.3] = 50
...
[8.6,9.6] = 9
[8.7,9.7] = 9
[8.8,9.8] = 2