Bash 使用awk计算多个文件的百分比

Bash 使用awk计算多个文件的百分比,bash,shell,sed,awk,echo,Bash,Shell,Sed,Awk,Echo,我有100个csv文件,如: file_city_1 file_city_2 file_city_3 file_city_4 城市名称是可变的,有25个城市,每个城市有4个地区。4个区域中的每个区域都包含一些统计信息,如: parameter1 : number1 parameter1 : number2 ..... parameter50 : number50 所以我应该计算每个地区的每个参数在城市总数中的百分比。所以我想做的是: file_city_parameter1_total =

我有100个csv文件,如:

file_city_1 file_city_2 file_city_3 file_city_4
城市名称是可变的,有25个城市,每个城市有4个地区。4个区域中的每个区域都包含一些统计信息,如:

parameter1 : number1
parameter1 : number2
.....
parameter50 : number50
所以我应该计算每个地区的每个参数在城市总数中的百分比。所以我想做的是:

file_city_parameter1_total = parameter1_region1 + parameter1_region2 + parameter1_region3 + parameter1_region4
#! /bin/bash

cities=(city1 city2) #list the 25 cities here

for ((i=0; i<${#cities[@]}; i++)) ; do
    city="${cities[$i]}"
    awk -F: -f a.awk ${city}_1 ${city}_2 ${city}_3 ${city}_4 ${city}_1 ${city}_2 ${city}_3 ${city}_4
done
然后计算每个区域此特定参数的百分比:

file_city_region_parameter1_percentage = parameter1_region1 / file_city_parameter1_total * 100 
然后对特定区域(所有100个文件)回显所有参数占总参数的百分比(4个区域的总和),并应对区域执行回显操作

我实际上尝试了多个代码,但我不想把它们粘贴在这里,因为它们太长了。我分别为每个区域、参数定义了所有参数,尝试了不同的命令替换和嵌套循环。但在某一点上卡住了。所以我想知道用awk、grep、sed或其他任何东西完成这项工作最简单的方法是什么


谢谢

您可以尝试以下方法:

file_city_parameter1_total = parameter1_region1 + parameter1_region2 + parameter1_region3 + parameter1_region4
#! /bin/bash

cities=(city1 city2) #list the 25 cities here

for ((i=0; i<${#cities[@]}; i++)) ; do
    city="${cities[$i]}"
    awk -F: -f a.awk ${city}_1 ${city}_2 ${city}_3 ${city}_4 ${city}_1 ${city}_2 ${city}_3 ${city}_4
done

这将产生100个文件,城市1_1_平均值,城市1_2_平均值,城市1_3_平均值,城市1_4_平均值,城市2_1_平均值。。使用参数的区域平均值..

您可以尝试以下操作:

file_city_parameter1_total = parameter1_region1 + parameter1_region2 + parameter1_region3 + parameter1_region4
#! /bin/bash

cities=(city1 city2) #list the 25 cities here

for ((i=0; i<${#cities[@]}; i++)) ; do
    city="${cities[$i]}"
    awk -F: -f a.awk ${city}_1 ${city}_2 ${city}_3 ${city}_4 ${city}_1 ${city}_2 ${city}_3 ${city}_4
done

这将产生100个文件,城市1_1_平均值,城市1_2_平均值,城市1_3_平均值,城市1_4_平均值,城市2_1_平均值。。使用参数的区域平均值..

区域是如何分开的?您真的需要用AWK来做吗?这当然是可能的,但使用Ruby或Perl可能会更容易。正如perreal在你的另一个问题中所写的那样,你应该使用
关联数组
DarkDust我对Perl和Ruby都不是很精通,所以我尝试用shell来完成。但我正在学习Pyton的路上。我会在一段时间后在新项目中使用它。好吧,既然你对AWK也不是很精通(无意冒犯),你可能会选择Python。不过,如果您真的愿意,可以使用AWK的关联数组(其行为类似于地图/字典)来解决这个问题。。。我只是觉得这是一个不必要的难以使用的工具。区域是如何分开的?你真的需要用AWK来做吗?这当然是可能的,但使用Ruby或Perl可能会更容易。正如perreal在你的另一个问题中所写的那样,你应该使用
关联数组
DarkDust我对Perl和Ruby都不是很精通,所以我尝试用shell来完成。但我正在学习Pyton的路上。我会在一段时间后在新项目中使用它。好吧,既然你对AWK也不是很精通(无意冒犯),你可能会选择Python。不过,如果您真的愿意,可以使用AWK的关联数组(其行为类似于地图/字典)来解决这个问题。。。我只是觉得这是一个不必要的难以使用的工具。我们应该如何声明这个a.awk函数?我们应该如何声明这个a.awk函数?