计算多个文件中数据的平均值

时间:2019-03-11 08:27:26

标签: bash shell unix terminal command

我知道上述问题的措词尚不清楚,但我会尽力解释。我有一组数据,这些数据由不同的酒店ID值和每个相应酒店的评级组成。这是我现在拥有的代码:

cd "$1" || exit 1

grep "<Overall>" hotel_*.dat | sed 's/\.dat:<Overall>/ /'

(代码基本上是从文件中提取数据并以更整洁的格式输出)

这是代码的输出: terminal output sample

如您在图像中看到的,我的数据由两列组成。我想做的是获取第2列中每个酒店ID的数据平均值,因此基本上得到的输出是:(酒店ID)(平均值)。每个酒店编号应有自己的平均值。

我尝试做的是:

cd "$1" || exit 1

grep "<Overall>" hotel_*.dat | sed 's/\.dat:<Overall>/ /' | awk '{SUM+= $2} END {print SUM/NR}'

这将获取所有数据的平均值,并且仅以数字(而不是平均值)的形式输出每个酒店ID的平均值(酒店ID)(平均值)。

我希望我的解释足够。

1 个答案:

答案 0 :(得分:0)

您可以使用awk进行汇总,如下所示:

$ cat file.txt
hotel_1 10
hotel_2 15
hotel_1 5

$ awk '{sum[$1] += $2; counts[$1]++;} END {for (i in sum) print i, sum[i]/counts[i];}'  file.txt
hotel_1 7.5
hotel_2 15