美文网首页
Linux读取键值对类型文件,分组求每个key的sum(valu

Linux读取键值对类型文件,分组求每个key的sum(valu

作者: 夜空最亮的9星 | 来源:发表于2018-08-07 18:16 被阅读20次

原文链接

需求如下:

有一个文件,格式如下

a 10
b 11
a 11
a 15
b 24
b 10

基本类似于键值对的格式,分隔符是空格,先要对第一列进行分组,并得到对应第二列的value合计

例如:a的value合计为:10+11+15=36;b的value合计为:11+24+10=45,输出:

a 36

b 45

请用linux命令,或者shell实现

#!bin/bash

declare -A mapcount=()
while read line
do
   key=`echo $line|cut -d ' ' -f 1`
   value=`echo $line|cut -d ' ' -f 2`
   #echo $key$value
   keys=`echo ${!mapcount[@]}`
   #echo $keys
   if [[ $keys =~ $key ]]; then
    #echo $key${mapcount[$key]}
    countvalue=0
    countvalue=$[mapcount[$key]+value]
    #echo $countvalue
    #echo "覆盖原值:"
    mapcount["$key"]="$countvalue" 
   else
           #echo "新值增加:"
    mapcount["$key"]="$value"
   fi
done < map.txt


for g in ${!mapcount[@]}  
do  
    echo $g"|"${mapcount[$g]}  
done

相关文章

网友评论

      本文标题:Linux读取键值对类型文件,分组求每个key的sum(valu

      本文链接:https://www.haomeiwen.com/subject/sowavftx.html