擅长:python、mysql、java
<p>如果必须多次执行相同的操作,还可以使用函数对数组值求和(假设值是以逗号分隔的数字)</p>
<p>重用来自<a href="https://stackoverflow.com/users/5866580/ravindersingh13">RavinderSingh13</a>的部分答案,并向<a href="https://stackoverflow.com/users/1745001/ed-morton">Ed Morton</a>表示衷心感谢,花时间提供大量反馈以改进代码:</p>
<pre><code>awk '
function arraySum(field, sum,arr,i) {
split(field,arr,",")
for (i in arr) sum += arr[i]
return sum
}
FNR==1{
print $0, "Total_Age", "Total_Weight", "Total_Height", "Percentage"
next
}
NR > 1 {
sumWeight = arraySum($4)
sumHeight = arraySum($5)
print $0, arraySum($3), sumWeight, sumHeight, (sumWeight ? sumHeight/sumWeight : 0)
}' file | column -t
</code></pre>
<p>输出</p>
<pre><code>Name type Age Weight Height Total_Age Total_Weight Total_Height Percentage
Xxx M 12,34,23 50,30,60,70 4,5,6,5.5 69 210 20.5 0.097619
Yxx F 21,14,32 40,50,20,40 3,4,5,5.5 67 150 17.5 0.116667
</code></pre>