[英]Linux Bash Script for calculating average of multiple files
我正在写一个将使用它将执行此工作的文件夹的参数的scipt。 目的是计算平均评论数,并将结果打印在文件名旁边。 我只为一个文件编写了脚本,它可以正常工作,但是我找不到任何针对多个文件的解决方案。 我应该得到类似的输出;
% ./averagereviews.sh path_to_folder
hotel_11212 3.51
hotel_2121 2.62
hotel_31212 2.43
...
我只在一家酒店完成了这项任务,代码是这样的;
grep "<Overall>" $1 | sed 's/<Overall>//g'| awk '{SUM += $1} END {print SUM/NR}'
这仅在文件中搜索单词“”,并获得其旁边的数字,然后将这些数字相加,并将总和与NR相除即可得出平均值。
当我运行它时,输出是给定酒店的平均值
./averagereviews.sh hotel_190158.dat
4.00578
但是我应该对打印一个酒店名称的文件夹中的多个.dat文件执行此操作。 我怎样才能做到这一点 ?
你可以“作弊”
> cat averagereviews.sh
#!/bin/bash
SUM=0
data_files=$(ls $1/dataFile*.dat)
cat $data_files | grep "<Overall>" | sed -e 's/<Overall>//g' | awk '{SUM += $1} END {print SUM/NR}'
并运行(从任何地方,使用任何所需的路径)
> ~/tools/averagereviews.sh /tmp/data/
简单地说,我是cat
第一荷兰国际集团的所有文件,并应用命令,其余的-让它表现得像管道是单个文件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.