awk sum of all columns needs to print exact amount


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting awk sum of all columns needs to print exact amount
# 1  
Old 01-26-2016
awk sum of all columns needs to print exact amount

Hi
I have attached txt file as input,
and i'm able to calculate sum of columns at the end but the format of sum is not coming up right.

Code:
awk -F"," '{for (i=4;i<=NF;i++) sum[i]+=$i}{print}; END { sum[1]="Total:"; for (i=1;i<=NF;i++) {printf  sum[i] ","} print "\n"}' input.txt

check the o/p file, at the Total: line I need to print exact sum of each columns, not 129102+E08 etc.

I even tried to printf "%10.4f" and it's still not working.
can anyone suggests how to print sum of columns with exact amount...

Convert this txt to Excel for better viewing....
# 2  
Old 01-26-2016
Well, "%10.4f" is not enough; it allows for 5 digits before the period. If the value is too large, awk print switches to the "g" scientific/engineering format. Your results (e.g. 1.29102e+08) are significantly larger. Try e.g. "%12.2f".

---------- Post updated at 16:01 ---------- Previous update was at 15:59 ----------

Or, just "%f" might work ...
# 3  
Old 01-26-2016
Hi Rudy,

No it's not working
can you tell me, what I'm doing wrong here,
Code:
awk -F"," '{for (i=4;i<=NF;i++) sum[i]+=$i}{print}; END { sum[1]="Total:"; for (i=1;i<=NF;i++) {printf("%15.5f%s",  sum[i], ",")} print "\n"}' inputfile

even %f doesn't print right number.

using this I don't have Total line in my bottom of file including I'm missing right numbers.


Code:
awk -F"," '{for (i=4;i<=NF;i++) sum[i]+=$i}{print}; END { sum[1]="Total:"; for (i=1;i<=NF;i++) {printf  sum[i] ","} print "\n"}' input.txt

if I use this, then I have total but one screw up is the format of number.
Can you assist me.
# 4  
Old 01-26-2016
What exactly is wrong with it? Except that it prints three "0.000000" columns in the begin of the last line which is OK as you print a string with a numerical format...
How about END {printf "Total:,,,"; for (i=4;i<=NF;i++)...
# 5  
Old 01-26-2016
Hi Rudi,

The problem is with sum[i], it doesn't print the big decimal number, no matter how big I extend %f .
# 6  
Old 01-26-2016
This is what it prints for me:
Code:
... {printf("%.2f,", sum[i])} ... 
Total:,,,129102083.37,129310134.67,130394794.10,132169591.38,134112515.47,133504487.51,132898230.90,135716155.12,140092809.14,140656362.70,...

What's wrong with it?
# 7  
Old 01-26-2016
Yes, the text fields should be left out. The following works with several awk versions ( even the Solaris /bin/awk -> oawk )
Code:
awk -F"," 'NR>1 {for (i=4;i<=NF;i++) sum[i]+=$i; nf=NF} {print} END {printf "Total:,,"; for (i=4;i<=nf;i++) {printf ",%f", sum[i]} print ""}' input.txt

Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Sum of columns using awk

Hello everyone I am a beginner in Shell scripting. Need your help to achieve desired result. I have a file (sample format below) 001g8aX0007jxLz xxxxxxxxxxxxxxx 9213974926411 CO-COMM-133 CO-L001-DLY 7769995578239 44938 1 1 ... (1 Reply)
Discussion started by: Rohit Mallah
1 Replies

2. Shell Programming and Scripting

awk - Print Sum

Hi, I have an awk command that I am using, and part of it sums COL_9 however when I read the output it is not including decimal places; awk ' BEGIN{FS=OFS=","} NR==1{print;next} {a+=$9 c = $12 d = $18 } END{for(i in a) {split(i,b,";"); print $1, $2, $3, b, $5, $6, b, b, a, $10, $11,... (1 Reply)
Discussion started by: Ads89
1 Replies

3. UNIX for Dummies Questions & Answers

Sum of an amount columns

Hi Friends.. I'm completely new to Unix and I need to write a program / script to sum amount columns in a .DAT file by using a configuration file to read the position of the columns. Could someone pls. help me on how to proceed? I've never written a program to read a configuration file and... (3 Replies)
Discussion started by: davinds
3 Replies

4. Shell Programming and Scripting

sum from ls -al |awk '{print $5}'

// AIX 5.3 & AIX 6.1 ls -al |awk '{print $5}' This gives each file's size in byte. I need to get: - the sum of all files in Giga bytes with loop. - excluding the size of directories (ls -al returns the size of directories). There are hundreds and thousands of files, so summing up... (8 Replies)
Discussion started by: Daniel Gate
8 Replies

5. Shell Programming and Scripting

loop + sum + print using awk

Hi, I am unable sum of each column in the loop usng awk command. Awk is not allowing the parameters in the command. i am facing the below error. awk: 0602-562 Field $() is not correct. Source file abc.txt 100,200,300,400,500,600,700,800,900 101,201,301,401,501,601,701,801,901 ... (1 Reply)
Discussion started by: number10
1 Replies

6. Shell Programming and Scripting

awk to print exact field number

Hello there. I want some help with awk I have this script that reads a file from awk and you can insert from keyboard any list from the fields that exist so to be printed on monitor echo "give a choice" read -a ans array=${ans} awk -F: -v k="$array" '{ ... (4 Replies)
Discussion started by: covis
4 Replies

7. Shell Programming and Scripting

awk sum columns

can anyone help me how do i add the colums using awk seperated by character @. for eg i have 3@4 2@9 5@1 the result should be 10 14 i tried using { sum+= $1 } END { print sum } but it just gives the result 10. can anyone help me with this one thank you and best regards (7 Replies)
Discussion started by: phone_book
7 Replies

8. Shell Programming and Scripting

help sum columns by break in first column with awk or sed or something.

I have some data that is something like this? item: onhand counted location ITEM0001 1 0 a1 ITEM0001 0 1 a2 ITEM0002 5 0 b5 ITEM0002 0 6 c1 I want to sum up... (6 Replies)
Discussion started by: syadnom
6 Replies

9. Shell Programming and Scripting

Find percent between sum of 2 columns awk help

Hi I'm new to this forum and I'm a beginner when it comes to shell and awk programming. But I have the following problem: I have 5 csv files (data1.csv, data2.csv, etc.) and need to calculate the average between the total sum of the 1st and 7 column. csv example:... (3 Replies)
Discussion started by: sapo51
3 Replies
Login or Register to Ask a Question