How can I calculate the SUM for all the individual columns (115 Columns)?
Input.txt
1st,2nd,3rd,4th,5th,Till-115thColumn
51,34,27,67,88,99
56,39,32,72,93,104
66,49,42,82,103,114
Output.txt
1st,2nd,3rd,4th,5th,Till-115thColumn
173,122,101,221,284,317
I tried this command:
awk -F"," 'BEGIN {sum=0; OFS=","} {for (i=1 i<=NF; i++) a[i]+=$i } END {for (i in a) print a[i]}' Input.txt
but I am not getting the required output.
This can be a way:
awk 'BEGIN{FS=OFS=","}
NR==1{print}
NR>1{for (i=1;i<=NF;i++) a[i]+=$i}
END{for (i=1;i<=NF;i++) printf a[i] OFS; printf "\n"}' file
It sets the comma as input/output field separator and then stores the sum of each column in an array a[]
. Finally, it loops through the results and prints them. Note NR==1
is user to print the header.
For your given input it returns:
$ awk 'BEGIN{FS=OFS=","} NR==1{print} NR>1{for (i=1;i<=NF;i++) a[i]+=$i} END{for (i=1;i<=NF;i++) printf a[i] OFS; printf "\n"}' file
1st,2nd,3rd,4th,5th,Till-115thColumn
173,122,101,221,284,317,
Because you missed a ;
in the for
declaration:
awk -F"," 'BEGIN {sum=0; OFS=","} {for (i=1 i<=NF; i++) a[i]+=$i } END {for (i in a) print a[i]}' a
awk: line 1: syntax error at or near )
so this makes it:
$ awk -F"," 'BEGIN {sum=0; OFS=","} {for (i=1; i<=NF; i++) a[i]+=$i } END {for (i in a) print a[i]}' file
^
174
124
104
225
289
317
your codes did the calculation correctly, but has problem in output part:
awk -F, '{for(i=1;i<=NF;i++)a[i]+=$i}
END{for(i=1;i<=NF;i++)printf "%d%s", a[i], (i==NF?"\n":",")}'file
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With