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