Sum in file based column


 
Thread Tools Search this Thread
Top Forums UNIX for Beginners Questions & Answers Sum in file based column
# 1  
Old 10-01-2019
Sum in file based column

Hi All,

I have a file as below and want to sum based on the id in the first column

Code:
Input
10264;ATE; 12
10265;SES;11
10266AUT;50
10264;ATE;10
10265;SES;13
10266AUT;89
10264;ATE;1
10265;SES;15
10266AUT;78

Output
10264;ATE; 23
10265;SES;39
10266AUT;139

I tried below 2 and not getting the output

Code:
awk '{split ($1,a,";");sum[a[1]] += $NF;} END { for (s in sum) print s,sum[s];} myfile -- Not working
awk -F'[;]' '{ t[$1]+=$3 } END { for (i in t) print i, t[i] }' -- myfile -- Not working

Thanks
# 2  
Old 10-01-2019
I tried the second one and it works, but your input file seems to broken. Try it with this one:
Code:
10264;ATE;12
10265;SES;11
10266;AUT;50
10264;ATE;10
10265;SES;13
10266;AUT;89
10264;ATE;1
10265;SES;15
10266;AUT;78

Or change your code to deal with a different file format..
This User Gave Thanks to Scrutinizer For This Post:
# 3  
Old 10-02-2019
Your data appears to have variable number of columns. The code you wrote will work if all rows in your input file has exactly three columns.

But if that is how your input data is, then one approach is to create an associative array with index/key by removing the last column:-
Code:
awk -F\; '
        {
                idx = $0
                sub(/[;][^;]*$/,X,idx)
                A[idx] += $NF
        }
        END {
                for ( k in A )
                        print k, A[k]
        }
' OFS=\; file

This User Gave Thanks to Yoda For This Post:
# 4  
Old 10-02-2019
Thanks . When I tried to print the description using the below command I am getting only one description not sure what I am doing wrong
Code:
awk -F'[;]' '{ t[$1]+=$3 } END { for (i in t) print i,$2, t[i] }'  my file

INPUT
10264;ATE;12
10265;SES;11
10266;AUT;50
10264;ATE;10
10265;SES;13
10266;AUT;89
10264;ATE;1
10265;SES;15
10266;AUT;78


OUTPUT
10266 AUT 217
10264 AUT 23
10265 AUT 39

Expected
10266 AUT 217
10264 ATE 23
10265 SES 39

Also if I have the number as 1009090992.1111 the my result is coming as 1.00909e+09 how to get that as a whole number
# 5  
Old 10-02-2019
Quote:
Originally Posted by arunkumar_mca
Thanks . When I tried to print the description using the below command I am getting only one description not sure what I am doing wrong
Code:
awk -F'[;]' '{ t[$1]+=$3 } END { for (i in t) print i,$2, t[i] }'  my file

INPUT
10264;ATE;12
10265;SES;11
10266;AUT;50
10264;ATE;10
10265;SES;13
10266;AUT;89
10264;ATE;1
10265;SES;15
10266;AUT;78


OUTPUT
10266 AUT 217
10264 AUT 23
10265 AUT 39

Expected
10266 AUT 217
10264 ATE 23
10265 SES 39

Also if I have the number as 1009090992.1111 the my result is coming as 1.00909e+09 how to get that as a whole number
Code:
awk -F'[;]' '{ t[$1 OFS $2]+=$3 } END { for (i in t) print i, t[i] }'  myFile

For the 'Also' part... please post sample representative input.
This User Gave Thanks to vgersh99 For This Post:
# 6  
Old 10-02-2019
Below is the example if also part

Code:
Example: 
10264;ATE;1009090992.1111
10265;SES;11
10266;AUT;50
10264;ATE;10
10265;SES;13
10266;AUT;89
10264;ATE;1
10265;SES;15
10266;AUT;78

Output
10264 ATE 1.00909e+09 -->  I am trying with printf to get it work
10266 AUT 217
10265 SES 39

# 7  
Old 10-02-2019
Use "%.f" as the format string.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Sum of a column as new column based on header in a script

Hello, I am trying to store sum of a column as a new column inside a file but have to find the column names dynamically I/p c1,c2,c3,c4,c5 10,20,30,40,50 20,30,40,50,60 If i want to find sum only column c1, c3 and output it as c6,c7 O/p c1,c2,c3,c4,c5,c6,c7 10,20,30,40,50,30,70... (6 Replies)
Discussion started by: mkathi
6 Replies

2. Shell Programming and Scripting

Sum column values based in common identifier in 1st column.

Hi, I have a table to be imported for R as matrix or data.frame but I first need to edit it because I've got several lines with the same identifier (1st column), so I want to sum the each column (2nd -nth) of each identifier (1st column) The input is for example, after sorted: K00001 1 1 4 3... (8 Replies)
Discussion started by: sargotrons
8 Replies

3. UNIX for Dummies Questions & Answers

Sum third column in a file when 1 and 2 repeat

Hello, Below is a portion of a file I am working on: 2:15 3001 120 2:15 3001 26.25 2:15 3002 12.5 2:15 3002 15 9:45 3001 45 9:45 3001 45 9:45 3002 105 9:45 3005 180 9:45 3005 123.75 9:45 3005 15 I am trying to get the sum of column 3 for all repeated values of columns 1 and 2 (The... (6 Replies)
Discussion started by: c@rlos
6 Replies

4. Shell Programming and Scripting

awk to sum a column based on duplicate strings in another column and show split totals

Hi, I have a similar input format- A_1 2 B_0 4 A_1 1 B_2 5 A_4 1 and looking to print in this output format with headers. can you suggest in awk?awk because i am doing some pattern matching from parent file to print column 1 of my input using awk already.Thanks! letter number_of_letters... (5 Replies)
Discussion started by: prashob123
5 Replies

5. UNIX for Dummies Questions & Answers

Sum based on certain column

I have file 1 1/1/2013 A 553.0763397 96 16582 X1 X3 X5 X7 X9 1/1/2013 B 600.8333588 195 11992 X2 X3 X6 X7 X9 1/1/2013 B 459.8333588 195 11992 X1 X3 X6 X7 X9 1/2/2013 A 844.2973022 306 19555 X1 ... (12 Replies)
Discussion started by: radius
12 Replies

6. UNIX for Dummies Questions & Answers

Sum based on column 1

i have file input aaa ccc,45567,rterw,1 bbb dcs,564543,hjghgh,1 aaa ccc,454,rterw,6 i want to sum based on column 1 expected output aaa ccc,7 bbb dcs,1 (4 Replies)
Discussion started by: radius
4 Replies

7. Shell Programming and Scripting

Sum Of Column Based On Column Condition

I have a following inputfile MT,AP,CDM,TTML,MUM,GS,SUCC,3 MT,AP,CDM,TTSL,AP,GS,FAIL,9 MT,AP,CDM,RCom,MAH,GS,SUCC,3 MT,AP,CDM,RTL,HP,GS,SUCC,1 MT,AP,CDM,Uni,UPE,GS,SUCC,2 MT,AP,CDM,Uni,MUM,GS,SUCC,2 TTSL,AP,GS,MT,MAH,CDM,SUCC,20 TTML,AP,GS,MT,MAH,CDM,FAIL,10... (2 Replies)
Discussion started by: siramitsharma
2 Replies

8. Shell Programming and Scripting

Sum a column value based on multiple keys

Hi, I have below as i/p file: 5ABC 36488989 K 000010000ASB BYTRES 5PQR 45757754 K 000200005KPC HGTRET 5ABC 36488989 K 000045000ASB HGTRET 5GTH 36488989 K 000200200ASB BYTRES 5FTU ... (2 Replies)
Discussion started by: nirnkv
2 Replies

9. Shell Programming and Scripting

sum multiple columns based on column value

i have a file - it will be in sorted order on column 1 abc 0 1 abc 2 3 abc 3 5 def 1 7 def 0 1 -------- i'd like (awk maybe?) to get the results (any ideas)??? abc 5 9 def 1 8 (2 Replies)
Discussion started by: jjoe
2 Replies

10. UNIX for Dummies Questions & Answers

How do I sum one column based on another column?

Hi, I am new to this forum and new to awk. I have a file that contains 2 columns. Heres an example of what it looks like: 10 + 20 + 40 + 50 - 70 - So the file is tab-delimited. What I want to do is add 10 to column 1 whenever column 2 is + and substract 10 from column 1... (1 Reply)
Discussion started by: phil_heath
1 Replies
Login or Register to Ask a Question

Featured Tech Videos