给定文件file.txt:
AAA 1 2 3 4 5 6 3 4 5 2 3
BBB 3 2 3 34 56 1
CCC 4 7 4 6 222 45
Run Code Online (Sandbox Code Playgroud)
有没有人对如何使用Bash脚本分别计算每个项目(即AAA,BBB,CCC)的均值,方差和范围有任何想法?谢谢.
这是一个解决方案awk,计算:
NF- 1(以awk表示,NF=线上的场数)
awk '{
min = max = sum = $2; # Initialize to the first value (2nd field)
sum2 = $2 * $2 # Running sum of squares
for (n=3; n <= NF; n++) { # Process each value on the line
if ($n < min) min = $n # Current minimum
if ($n > max) max = $n # Current maximum
sum += $n; # Running sum of values
sum2 += $n * $n # Running sum of squares
}
print $1 ": min=" min ", avg=" sum/(NF-1) ", max=" max ", var=" ((sum*sum) - sum2)/(NF-1);
}' filename
Run Code Online (Sandbox Code Playgroud)
输出:
AAA: min=1, avg=3.45455, max=6, var=117.273
BBB: min=1, avg=16.5, max=56, var=914.333
CCC: min=4, avg=48, max=222, var=5253
Run Code Online (Sandbox Code Playgroud)
请注意,您可以将awk脚本(单引号之间的所有内容,但不包括单引号)保存在文件中,比如调用script,并执行它awk -f script filename
| 归档时间: |
|
| 查看次数: |
6223 次 |
| 最近记录: |