繁体   English   中英

Linux Bash脚本,用于计算多个文件的平均值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM