使用 awk 添加列值
adding column values using awk
使用 awk 添加列:
x,y,8,0,0,0,0,0,0,0
m,z,0,0,0,0,0,0,0,0
a,b,206,1,0,2,0,0,0,0
c,d,211,0,0,0,0,0,0,1
e,f,8,0,0,1,0,0,0,0
g,h,5,0,0,0,0,0,0,0
i,j,2,0,0,0,0,0,0,0
k,l,36,0,0,0,0,0,0,0
m,n,2,0,0,0,0,0,0,0
o,p,43,0,0,1,0,0,0,0
q,r,2153,28,1,5,0,0,5,3
s,t,96,0,0,0,0,0,0,0
u,v,25,0,0,0,0,0,0,0
x,y,4,0,0,0,0,0,0,0
,,2799,29,1,9,0,0,5,4
awk -F, '{for (i=1;i<=NR;i++) sum[i]+=$i;}; END{for (i in sum) print sum[i];}' file1
但它正在换行打印。
你能试试这个吗;
这是对行求和并插入每行的最后。
awk -F, '{sum=0; for (i=1; i<=NF; i++) { sum+= $i } print [=10=] "," sum}' file1
要对列求和,
awk 'BEGIN{FS=OFS=","} {for (i=1;i<=NF;i++) sum[i]+=$i} END{for(i=1;i<=NF;i++) printf sum[i] OFS; printf "\n"}' file1
测试:
$ awk 'BEGIN{FS=OFS=","} {for (i=1;i<=NF;i++) sum[i]+=$i} END{for(i=1;i<=NF;i++) printf sum[i] OFS; printf "\n"}' file1
0,0,2799,29,1,9,0,0,5,4,
$ awk -F, '{sum=0; for (i=1; i<=NF; i++) { sum+= $i } print [=12=] "," sum}' test
x,y,8,0,0,0,0,0,0,0,8
m,z,0,0,0,0,0,0,0,0,0
a,b,206,1,0,2,0,0,0,0,209
c,d,211,0,0,0,0,0,0,1,212
e,f,8,0,0,1,0,0,0,0,9
g,h,5,0,0,0,0,0,0,0,5
i,j,2,0,0,0,0,0,0,0,2
k,l,36,0,0,0,0,0,0,0,36
m,n,2,0,0,0,0,0,0,0,2
o,p,43,0,0,1,0,0,0,0,44
q,r,2153,28,1,5,0,0,5,3,2195
s,t,96,0,0,0,0,0,0,0,96
u,v,25,0,0,0,0,0,0,0,25
使用 awk 添加列:
x,y,8,0,0,0,0,0,0,0
m,z,0,0,0,0,0,0,0,0
a,b,206,1,0,2,0,0,0,0
c,d,211,0,0,0,0,0,0,1
e,f,8,0,0,1,0,0,0,0
g,h,5,0,0,0,0,0,0,0
i,j,2,0,0,0,0,0,0,0
k,l,36,0,0,0,0,0,0,0
m,n,2,0,0,0,0,0,0,0
o,p,43,0,0,1,0,0,0,0
q,r,2153,28,1,5,0,0,5,3
s,t,96,0,0,0,0,0,0,0
u,v,25,0,0,0,0,0,0,0
x,y,4,0,0,0,0,0,0,0
,,2799,29,1,9,0,0,5,4
awk -F, '{for (i=1;i<=NR;i++) sum[i]+=$i;}; END{for (i in sum) print sum[i];}' file1
但它正在换行打印。
你能试试这个吗;
这是对行求和并插入每行的最后。
awk -F, '{sum=0; for (i=1; i<=NF; i++) { sum+= $i } print [=10=] "," sum}' file1
要对列求和,
awk 'BEGIN{FS=OFS=","} {for (i=1;i<=NF;i++) sum[i]+=$i} END{for(i=1;i<=NF;i++) printf sum[i] OFS; printf "\n"}' file1
测试:
$ awk 'BEGIN{FS=OFS=","} {for (i=1;i<=NF;i++) sum[i]+=$i} END{for(i=1;i<=NF;i++) printf sum[i] OFS; printf "\n"}' file1
0,0,2799,29,1,9,0,0,5,4,
$ awk -F, '{sum=0; for (i=1; i<=NF; i++) { sum+= $i } print [=12=] "," sum}' test
x,y,8,0,0,0,0,0,0,0,8
m,z,0,0,0,0,0,0,0,0,0
a,b,206,1,0,2,0,0,0,0,209
c,d,211,0,0,0,0,0,0,1,212
e,f,8,0,0,1,0,0,0,0,9
g,h,5,0,0,0,0,0,0,0,5
i,j,2,0,0,0,0,0,0,0,2
k,l,36,0,0,0,0,0,0,0,36
m,n,2,0,0,0,0,0,0,0,2
o,p,43,0,0,1,0,0,0,0,44
q,r,2153,28,1,5,0,0,5,3,2195
s,t,96,0,0,0,0,0,0,0,96
u,v,25,0,0,0,0,0,0,0,25