我得到了一个如下的txt格式,每个用户(a,b,c ...)都有一个数值
旧值文件
a,1000130103828
b,9230032882842
c,98247249242402
...
和新值文件
a,20200203020
b,1029328428429
c,102492290011
...
如何通过在 Bash 中对每个用户的值求和来轻松计算新文件?
打电话给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。
$ 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