ما هي أسرع طريقة للحصول على متوسط ​​مجموعة من الأرقام من سطر الأوامر؟

StackOverflow https://stackoverflow.com/questions/214363

سؤال

باستخدام أي أدوات تتوقع العثور عليها في نظام nix (في الواقع، إذا كنت تريد، فإن msdos جيد أيضًا)، ما هي الطريقة الأسهل/الأسرع لحساب متوسط ​​مجموعة من الأرقام، بافتراض أن لديك واحدة منها لكل سطر في دفق أو ملف؟

هل كانت مفيدة؟

المحلول

أوك

awk '{total += $1; count++ } END {print total/count}'

نصائح أخرى

awk ' { n += $1 }; END { print n / NR }'

هذا يتراكم المبلغ في n, ثم نقسم على عدد العناصر (NR = عدد السجلات).

يعمل للأعداد الصحيحة أو الحقيقية.

استخدام عدد الاستخدامات لنظام التشغيل UNIX:

average 1 2 3 4 5 6 7 8 9
perl -e 'while (<>) { $sum += $_; $count++ } print $sum / $count, "\n"';

في بوويرشيل، سيكون كذلك

get-content .\meanNumbers.txt | measure-object -average

وبطبيعة الحال، هذا هو بناء الجملة مطول.إذا كتبته باستخدام الأسماء المستعارة،

gc .\meanNumbers.txt | measure-object -a

باستخدام "ش" (https://github.com/nferraz/st):

$ st numbers.txt
N      min   max    sum    mean  sd
10.00  1.00  10.00  55.00  5.50  3.03

حدد خيارًا لرؤية الإحصائيات الفردية:

$ st numbers.txt --mean
5.5

(تنصل:لقد كتبت هذه الأداة :))

بيرل.

@a = <STDIN>;

for($i = 0; $i < #@a; $i++)
{
   $sum += $a[i];
}

print $a[i]/#@a;

مسؤولية المشتري:قد يكون بناء الجملة الخاص بي قليلاً.

روبي بطانة واحدة

cat numbers.txt | ruby -ne 'BEGIN{$sum=0}; $sum=$sum+$_.to_f; END{puts $sum/$.}'

مصدر

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top