2

我想添加 5 个文件的第 3 列,以便新文件具有相同的第 2 列和 5 个文件的第 3 列的总和。

我试过这样的事情:

$ cat freqdat044.dat | awk '{n=$3; getline <"freqdat046.dat";print $2" " n+$3}' > freqtrial1.dat 

freqdat048.dat`enter code here`$ cat freqdat044.dat | awk '{n=$3; getline <"freqdat046.dat";print $2" " n+$3}' > freqtrial1.dat

文件名:

freqdat044.dat
freqdat045.dat
freqdat046.dat
freqdat047.dat 
freqdat049.dat
freqdat050.dat

并保存在输出文件中,仅包含$2和新的列形成第三个的总和

4

1 回答 1

5
awk '{x[$2] += $3} END {for(y in x) print y,x[y]}' freqdat044.dat freqdat045.dat freqdat046.dat freqdat047.dat freqdat049.dat freqdat050.dat

这不一定会打印出现在第一个文件中的行。如果要保留该排序,则必须将该排序保存在某处:

awk 'FNR==NR {keys[FNR]=$2; cnt=FNR} {x[$2] += $3} END {for(i=1; i<=cnt; ++i) print keys[i],x[keys[i]]}' freqdat044.dat freqdat045.dat freqdat046.dat freqdat047.dat freqdat049.dat freqdat050.dat
于 2013-09-03T19:52:51.167 回答