簡體   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