我的表看起来像这样:
11 wordA
16 wordB
17 wordC
24 wordA
25 wordB
如果该行上的字匹配,我想将数字相加,这样我就可以合并表格了。结果看起来应该是这样的:
35 wordA
41 wordB
17 wordC
非常感谢帮助!
(P.S。有没有办法用awk做到这一点?)
答案 0 :(得分:7)
这是一个非常典型的awk
类问题。执行此操作的awk
脚本如下所示:
{ totals[$2] += $1 }
END {
for (i in totals)
print totals[i], i
}
第一节创建一个由第二列键入的总计关联数组。然后END
块遍历数组并打印总数。
答案 1 :(得分:1)
在Bash 4(具有关联数组)中:
declare -A seen
while read -r num word
do
[[ $word ]] && (( seen["$word"] += num ))
done < <(printf '%s\n' "${table[@]}")
for word in "${!seen[@]}"
do
printf '%d %s\n' "${seen["$word"]}" "$word"
done
您可以根据需要将<(printf '%s\n' "${table[@]}")
替换为<(some_command)
或filename
。
答案 2 :(得分:0)
将它传递给
awk '{s[$2]+=$1}END{ for(i in s) print s[i], i }'