Sử dụng bất kỳ công cụ nào bạn muốn tìm trên hệ thống nix (trên thực tế, nếu bạn muốn, msdos cũng tốt), cách dễ nhất/nhanh nhất để tính giá trị trung bình của một tập hợp số, giả sử bạn có một dòng trên mỗi dòng trong luồng hoặc tệp?Cách nhanh nhất để lấy giá trị trung bình của một tập hợp các số từ dòng lệnh là gì?
Trả lời
AWK
awk '{total += $1; count++ } END {print total/count}'
Perl.
@a = <STDIN>;
for($i = 0; $i < #@a; $i++)
{
$sum += $a[i];
}
print $a[i]/#@a;
Lưu ý Emptor: Cú pháp của tôi có thể hơi ngớ ngẩn.
perl -e 'while (<>) { $sum += $_; $count++ } print $sum/$count, "\n"';
Sử dụng Num-Utils cho UNIX:
average 1 2 3 4 5 6 7 8 9
awk ' { n += $1 }; END { print n/NR }'
này tích lũy tổng trong n
, sau đó phân chia bởi số lượng các mục (NR
= Số hồ sơ).
Làm việc cho số nguyên hoặc số thực.
Tốt đẹp trên thủ thuật NR, không chắc chắn mà awk câu trả lời để chấp nhận vì vậy tôi copped ra và đi cho một trong những phiếu có nhiều nhất! – Anthony
Trong Powershell, nó sẽ là
get-content .\meanNumbers.txt | measure-object -average
Tất nhiên, đó là cú pháp tiết. Nếu bạn đã gõ nó sử dụng bí danh,
gc .\meanNumbers.txt | measure-object -a
Sử dụng "st" (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
Chỉ định một tùy chọn để xem số liệu thống kê cá nhân:
$ st numbers.txt --mean
5.5
(DISCLAIMER: Tôi viết này tool :))
Ruby one liner
cat numbers.txt | ruby -ne 'BEGIN{$sum=0}; $sum=$sum+$_.to_f; END{puts $sum/$.}'
Thú vị. Tôi đã cài đặt trên Ubuntu và tôi phải chỉ định các số trên stdin, không phải là đối số. – Glyph