我知道上述问题的措词尚不清楚,但我会尽力解释。我有一组数据,这些数据由不同的酒店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)(平均值)。
我希望我的解释足够。
答案 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