如何根据第一列和第二列计算总和?使用shell脚本

时间:2013-12-15 09:19:54

标签: shell sed awk

我有一个类似的文件:

ast 6   +   0   2   
ast 6   +   1   20  
ast 7   -   0   0   
ast 7   -   1   24  
ria 366914  +   0   0   
ria 366914  +   0   2

根据第一和第二列分类。它意味着所有相同的价值 第1列和第2列彼此关闭。 我想在第一列和第二列具有相同值时对第4列和第5列求和。

ast 6   +   1   22      
ast 7   -   1   24      
ria 366914  +   0   2  

2 个答案:

答案 0 :(得分:1)

使用awk:

awk 'p != $1 OFS $2{if (NR>1) print p, q, s; p=$1 OFS $2; q=$3 OFS $4; s=$5; next} {s+=$5} END{print p, q, s}' file
ast 6 + 0 22
ast 7 - 0 24
ria 366914 + 0 2

答案 1 :(得分:0)

awk '{str=$1 FS $2;a[str]+=$4;b[str]+=$5;c[str]=$3}END{for (i in a) print i,c[i],a[i],b[i]}' infile |sort -k1,1 -k2,2n

ast 6 + 1 22
ast 7 - 1 24
ria 366914 + 0 2