【发布时间】:2019-07-06 00:17:02
【问题描述】:
我正在关注此链接https://stackoverflow.com/a/54599800/10220825。我想创建一个数组来存储每个键的值并进行一些数学计算,如平均值、最大值等。 这是我的代码:
BEGIN { FS="[: ]+"}
/:/{vals[$1]=vals[$1] OFS $2+0}
END {
for (key in vals)
{
c=0
sum=0
print key vals[key]
arr[c++]=vals[key]
for(i=0;i<c;i++)
{
#print arr[0]
sum+=sum+arr[i]
}
print "Sum = " sum
}
}
但arr 无法存储vals[key] 的单个值,因为vals[key] 值似乎存储为字符串。
请帮助我在 awk 的关联数组中探索更多内容,以便我可以将 vals[key] 的单个值存储在数组中。 For example: for vals[RAM] I could able to create a temporary array to store individual like: arr[0]=142;arr[1]=149;arr[2]=131。创建临时数组的主要目的是计算数学计算,如 max、min、avg、搜索、排序等。
预期输出:
RAM 142 149 131
Sum= 422
Cache 456 152 184
Sum= 792
我的代码输出:
RAM 142 149 131
Sum= 142
Cache 456 152 184
Sum= 456
【问题讨论】:
-
这看起来像 Awk,而不是 Bash。
-
edit 您的问题包括您希望从中获得预期输出的示例输入。可以参考其他问题等,但请确保该问题独立存在。