1

我得到了一个如下的txt格式,每个用户(a,b,c ...)都有一个数值

旧值文件

a,1000130103828
b,9230032882842
c,98247249242402
...

和新值文件

a,20200203020
b,1029328428429
c,102492290011
...

如何通过在 Bash 中对每个用户的值求和来轻松计算新文件?

4

2 回答 2

1

打电话给awk?

 awk '-F,' '{users[$1]+=$2}; END{for (u in users) {printf("%s,%s\n", u, users[u])}}' file1 file2 > sumFile

输出

cat sumFile
a,1020330306848
b,10259361311271
c,98349741532413

可能有超过 3 个用户,输出不会像您的文件中那样排序,如果您需要排序,请添加

  | sort -t, -k1 

到上面。

IHTH。

于 2012-11-12T18:23:30.733 回答
0
$ join -j1 -t, old new | tr ',' ' ' | while read r; do
> ra=($r); echo ${ra[0]},$(( ${ra[1]} + ${ra[2]} )); done
a,1020330306848
b,10259361311271
c,98349741532413

您拥有的两个文件在哪里old和是。new如果需要,通过添加重定向到新文件

> newfile
于 2012-11-12T18:29:06.383 回答