Grouping output with sum


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Grouping output with sum
# 1  
Old 02-26-2013
Grouping output with sum

Hi Gurus,

I would like to do in a script something that is really easy in sql.

Basically, I have a file with a fomat like the following:

Code:
name1_test          501
name 1 33            510
test2                              900
name1_test         300

So, I would like to group them as an output, receiving an output without the repetitions.

Code:
name1_test      801
name 1 33            510
test2                              900

I have tried different options... but it is not working, also, some of those names inside the file contain spaces, so then trying to filter with awk it just show partial results of the file name, that is another thing ... if with awk I can separate the first column, with a for statement I can get the information for the sum.

Any help with any of those is greatly appreciated.
# 2  
Old 02-26-2013
Code:
awk ' {
        $1 = $1
        $NF = ","$NF
        f1 = $0
        sub(/,.*/,x,f1)
        f2 = $0
        sub(/.*,/,x,f2)
        a[++i] = f1;
        b[++j] = f2;
        c[f1] = f2;
} END {
        for(k in c)
        {
                for(n=1; n<=i; n++)
                {
                        if(k == a[n])
                        {
                                t += b[n]
                        }
                }
                print k, t
                t = 0
        }
} ' file

# 3  
Old 02-27-2013
Another approach:
Code:
awk 'NR==FNR{a[$1]+=$NF; next}a[$1]{$NF=a[$1]; print; delete a[$1]}' file file

# 4  
Old 02-27-2013
@Franklin52:

Quote:
Originally Posted by ocramas
. . .
some of those names inside the file contain spaces
. . .
---------- Post updated at 10:15 ---------- Previous update was at 10:11 ----------

Code:
$ awk '{tmp=$NF; NF--; Ar[$0]+=tmp} END {for (i in Ar) print i, Ar[i]}' file

This User Gave Thanks to RudiC For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Sum the fields with 6 decimal places - getting only 2 decimal places as output

I used the below script to Sum up a field in a file based on some unique values. But the problem is when it is summing up the units, it is truncating to 2 decimals and not 6 decimals as in the input file (Input file has the units with up to 6 Decimals – Sample data below, when the units in the 2... (4 Replies)
Discussion started by: brlsubbu
4 Replies

2. Shell Programming and Scripting

Name grouping

awk 'FNR==NR {a; next} $NF in a' genes.txt refseq_exons.txt > output.txt I can not figure out how to group the same name in $4 together. Basically, all the SKI together in separate rows and all the TGFB2. Thank you :). chr1 2160133 2161174 SKI chr1 218518675 218520389 TGFB2... (1 Reply)
Discussion started by: cmccabe
1 Replies

3. Shell Programming and Scripting

Sum of columns and format the output

Input file: 011100020100 0.00 1 20000 30000 20000 011110000025 0.00 1 000 240000 10000 011100020100 0.00 1 200000 2324000 403500 032200030025 0.00 1 2077500 3077500 250000 032200030025 0.00 1 2565000 25536400 320000 022220000005 0.00 1 10000 300000 300000 022220000005 0.00 1 200050... (7 Replies)
Discussion started by: vinus
7 Replies

4. Shell Programming and Scripting

Script to find out the sum of output on the screen

Hi, I am new to scripting.I am using redhat linux 6.I am just finding a way to summing up the output displayed as below.It will help me a lot since we used to get this kind of output every now and then. I am pasting here the output .What is required is this o/p needs to be summed up and... (3 Replies)
Discussion started by: muraliinfy04
3 Replies

5. Shell Programming and Scripting

How to sum multiple column output with awk ?

Hi Experts, I am trying to sum multiple columns and rows with awk , I want the sum of : 1] Horizontal Sum: (rows sum): 2] Vertical Sum: (Column's sum] details: # cat file1 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 40 31 32 33 34 35 36 37 38 39 70 41 42 43 44... (2 Replies)
Discussion started by: rveri
2 Replies

6. UNIX for Dummies Questions & Answers

AWK: add and sum line in output

Hi, I have this output: extended device statistics device r/s w/s kr/s kw/s wait actv svc_t %w %b sd1 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0 sd2 0.1 2.9 2.6 24.8 0.0 0.1 21.0 0 1 sd3 0.1 2.9 2.7 24.8 0.0 ... (9 Replies)
Discussion started by: mjnman
9 Replies

7. Programming

SQL Grouping SUM

Hello people, I'm scratching my head to find a solution to this query. I have a simple SQL table: data | tot ================== 111201/0000 | 3 111201/0001 | 5 111201/0002 | 7 111201/0003 | 2 ..... 111201/0059 | 1 111201/0100 | 5 111201/0101 | 8 111201/0102 | 6... (7 Replies)
Discussion started by: Lord Spectre
7 Replies

8. UNIX for Dummies Questions & Answers

Sum of all columns in all files in one output file

If I have say 4 files like this: File1: 1 3 4 7 7 0 5 7 5 9 1 2 7 4 8 File2: 1 4 6 2 5 7 1 2 3 6 0 3 0 3 8 File3: (5 Replies)
Discussion started by: cosmologist
5 Replies

9. Shell Programming and Scripting

Print sum and relative value of the sum

Hi i data looks like this: student 1 Subject1 45 55 Subject2 44 55 Subject3 33 44 // student 2 Subject1 45 55 Subject2 44 55 Subject3 33 44 i would like to sum $2, $3 (marks) and divide each entry in $2 and $3 with their respective sums and print for each student as $4 and... (2 Replies)
Discussion started by: saint2006
2 Replies

10. Shell Programming and Scripting

scripting/awk help : awk sum output is not comming in regular format. Pls advise.

Hi Experts, I am adding a column of numbers with awk , however not getting correct output: # awk '{sum+=$1} END {print sum}' datafile 2.15291e+06 How can I getthe output like : 2152910 Thank you.. # awk '{sum+=$1} END {print sum}' datafile 2.15079e+06 (3 Replies)
Discussion started by: rveri
3 Replies
Login or Register to Ask a Question