需求如下:
有一个文件,格式如下
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
网友评论