以下のような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
持っている 2 つのファイルです。追加して、必要に応じて新しいファイルにリダイレクトします
> newfile