繁体   English   中英

一行中的总和/平均数-UNIX

[英]Sum/Average numbers in a single line - UNIX

我正在研究一个小的脚本,在一行中取3个数字,求和并求平均值,然后在行末打印结果。 我知道如何使用粘贴命令,但是我发现的所有事情都在告诉我如何平均列。 我需要平均一条线,而不是一列。 有什么建议吗? 谢谢!

awk解救!

$ echo 1 2 3 | awk -v RS=' ' '{sum+=$1; count++} END{print sum, sum/count}'
6 2

适用于任意数量的输入字段

$ echo 1 2 3 4 | awk -v RS=' ' '{sum+=$1; count++} END{print sum, sum/count}'
10 2.5

您可以在将行交给bc之前对其进行操作。 使用bc您还有其他可能性,例如设置刻度。 从1 2 3的简单均值是

   echo "1 2 3"  | sed -e 's/\([0-9.]\) /\1+/g' -e 's/.*/(&)\/3/' | bc

您可以将其包装在一个函数中,然后查看更多可能性:

function testit {

   echo "Input $@"
   echo "Integer mean"
   echo "$@"  | sed -e 's/\([0-9.]\) /\1+/g' -e 's/.*/(&)\/'$#'/' | bc

   echo "floating decimal mean"
   echo "$@"  | sed -e 's/\([0-9.]\) /\1+/g' -e 's/.*/(&)\/'$#'/' | bc -l

   echo "2 decimal output mean"
   echo "$@"  | sed -e 's/\([0-9.]\) /\1+/g' -e 's/.*/scale=2; (&)\/'$#'/' | bc
   echo
}

testit 4 5 6
testit 4 5 8
testit 4.2 5.3 6.4
testit 1 2 3 4 5 6 7 8 9

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM