使用awk将多个文件中的相同列相加?

时间:2013-09-03 19:43:51

标签: awk

我想添加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和新col形成第3个的总和

1 个答案:

答案 0 :(得分: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