使用awk对两列进行分组和求和

使用awk对两列进行分组和求和,awk,Awk,如何从下面的数据中获得各地区的销售和成本总额 Region Sales Cost North 139 35 South 786 295 South 312 117 East 288 108 North 149 56 West 508 127 North 145 54 South 379 142 East 500 188 例如 简单!,只需使用两个数组 awk 'NR>1{uniqueSales[$1]+=$2; uniqueCost[$1]+=$3; next} END{for (i i

如何从下面的数据中获得各地区的销售和成本总额

Region Sales Cost
North 139 35
South 786 295
South 312 117
East 288 108
North 149 56
West 508 127
North 145 54
South 379 142
East 500 188
例如

简单!,只需使用两个数组

awk 'NR>1{uniqueSales[$1]+=$2; uniqueCost[$1]+=$3; next}
END{for (i in uniqueSales) print i,uniqueSales[i],uniqueCost[i]}' file
代码跳过第一条记录NR>1,其中NR是一个特殊变量,用于跟踪Awk正在处理的每一行的行号。然后我们创建一个哈希映射,索引为$1,两个不同的数组uniqueSales[$1]+=$2;uniqueCost[$1]+=$3,分别从$2和$3增加值

处理完所有行后。END子句打印两个数组中的值,以获得所需的输出

South 1477 554
East 788 296
North 433 145
West 508 127
简单!,只需使用两个数组

awk 'NR>1{uniqueSales[$1]+=$2; uniqueCost[$1]+=$3; next}
END{for (i in uniqueSales) print i,uniqueSales[i],uniqueCost[i]}' file
代码跳过第一条记录NR>1,其中NR是一个特殊变量,用于跟踪Awk正在处理的每一行的行号。然后我们创建一个哈希映射,索引为$1,两个不同的数组uniqueSales[$1]+=$2;uniqueCost[$1]+=$3,分别从$2和$3增加值

处理完所有行后。END子句打印两个数组中的值,以获得所需的输出

South 1477 554
East 788 296
North 433 145
West 508 127

我使用过一个关联数组,例如{a[$1]+=$2,然后在END语句中打印出该数组。它给出了第2列的总和。不确定如何同时对两列执行该操作。我使用过一个关联数组,例如{a[$1]+=$2,然后在END语句中打印出数组。它给出了第2列的总和。不确定如何同时对两列执行此操作。感谢解决方案和解释!感谢解决方案和解释!