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

> newfile
于 2012-11-12T18:29:06.383 に答える