gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 10:24:12 28 4
gpt4 key购买 nike

我正在编写一个 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所有文件,然后将你的命令应用到其余文件 - 让它的行为就像管道是单个文件一样。

关于用于计算多个文件平均值的 Linux Bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42419928/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com