Linux 如何从bashshell脚本中的文件计算每行的中间值
我试图从bashshell脚本中的一个文件中计算每一行的中间值。我相信有一种方法可以通过使用cut、sort、head和tail的流水线命令来实现这一点,但我不知道如何将这个过程集成到我现有的代码中。我想在计算平均值的同一点上计算中值。最好的方法是什么Linux 如何从bashshell脚本中的文件计算每行的中间值,linux,bash,shell,Linux,Bash,Shell,我试图从bashshell脚本中的一个文件中计算每一行的中间值。我相信有一种方法可以通过使用cut、sort、head和tail的流水线命令来实现这一点,但我不知道如何将这个过程集成到我现有的代码中。我想在计算平均值的同一点上计算中值。最好的方法是什么 while read i do sum=0 count=0 mean=0 median=0 for num in $i do sum=$(($sum + $num))
while read i
do
sum=0
count=0
mean=0
median=0
for num in $i
do
sum=$(($sum + $num))
count=`expr $count + 1`
mean=`expr $sum / $count`
#Need to calculate the median
done
echo "Sum: $sum Mean: $mean"
done < $2
当我读的时候
做
总和=0
计数=0
平均值=0
中位数=0
对于num,单位为$i
做
总和=$($sum+$num))
count=`expr$count+1`
平均值=`expr$sum/$count`
#需要计算中位数吗
完成
回声“总和:$总和平均值:$Mean”
完成<$2
awk
救援
awk '{sum=0;
n=split($0,a);
for(i=1;i<=n;i++) sum+=a[i];
asort(a);
median=n%2?a[n/2+1]:(a[n/2]+a[n/2+1])/2;
print sum, sum/n, median}' file
awk'{sum=0;
n=拆分($0,a);
对于(i=1;i假设行的长度可变:
使用bash
和:
“最好的方法是什么?”-可能不是在shell脚本中:-)尝试在此处搜索[awk]average
。我看到600+Q/As。祝你好运。注意:awk中的asort仅在awk的gnu版本中可用。
while read x
do tr -s '\t' '\n' <<< "$x" | \
datamash median 1
done < file
while read x
do tr -s '\t' '\n' <<< "$x" | \
numaverage -M
done < file