我有2个看起来像这样的文件:

文件1

aaa 5
bbb 2
ccc 9
ddd 46
eee 89
fff 56

文件2
aaa 54
bbb 8
ccc 16
ddd 4
eee 66
fff 9

我想要特定列的总和
(例如,两个文件中的aaa之和
CCC的总和+ ddd的总和
和bbb的总和+ eee的总和+ fff的总和)

例如,使用awk是否有一种简单的方法?

最佳答案

如果您只想求和,则可以使用纯bash进行此操作(此处使用关联数组,因此需要bash 4):

declare -A sums
while read name val1 val2; do
  sums[$name]=$(( val1 + val2 ))
done < <(join -j 1 file1 file2)

echo "Sum of aaa: ${sums[aaa]}"
echo "Sums of ccc and ddd: $(( ${sums[ccc]} + ${sums[ddd]} ))"
echo "Sums of bbb, eee, and fff: $(( ${sums[bbb]} + ${sums[eee]} + ${sums[fff]} ))"

关于linux - 合并和汇总多个文件中的数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11761561/

10-09 01:57