Sponsored Content
Full Discussion: Sum in file based column
Top Forums UNIX for Beginners Questions & Answers Sum in file based column Post 303039356 by Yoda on Tuesday 1st of October 2019 11:04:52 PM
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:
 

10 More Discussions You Might Find Interesting

1. 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

2. 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

3. 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

4. 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

5. 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

6. 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

7. 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

8. 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

9. 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

10. 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
DBIx::Class::ResultSetColumn(3) 			User Contributed Perl Documentation			   DBIx::Class::ResultSetColumn(3)

NAME
DBIx::Class::ResultSetColumn - helpful methods for messing with a single column of the resultset SYNOPSIS
$rs = $schema->resultset('CD')->search({ artist => 'Tool' }); $rs_column = $rs->get_column('year'); $max_year = $rs_column->max; #returns latest year DESCRIPTION
A convenience class used to perform operations on a specific column of a resultset. METHODS
new my $obj = DBIx::Class::ResultSetColumn->new($rs, $column); Creates a new resultset column object from the resultset and column passed as params. Used internally by "get_column" in DBIx::Class::ResultSet. as_query Arguments: none Return Value: [ $sql, @bind_values ] Returns the SQL query and bind vars associated with the invocant. This is generally used as the RHS for a subquery. next Arguments: none Return Value: $value Returns the next value of the column in the resultset (or "undef" if there is none). Much like "next" in DBIx::Class::ResultSet but just returning the one value. all Arguments: none Return Value: @values Returns all values of the column in the resultset (or "undef" if there are none). Much like "all" in DBIx::Class::ResultSet but returns values rather than result objects. reset Arguments: none Return Value: $self Resets the underlying resultset's cursor, so you can iterate through the elements of the column again. Much like "reset" in DBIx::Class::ResultSet. first Arguments: none Return Value: $value Resets the underlying resultset and returns the next value of the column in the resultset (or "undef" if there is none). Much like "first" in DBIx::Class::ResultSet but just returning the one value. single Arguments: none Return Value: $value Much like "single" in DBIx::Class::ResultSet fetches one and only one column value using the cursor directly. If additional rows are present a warning is issued before discarding the cursor. min Arguments: none Return Value: $lowest_value my $first_year = $year_col->min(); Wrapper for ->func. Returns the lowest value of the column in the resultset (or "undef" if there are none). min_rs Arguments: none Return Value: $resultset my $rs = $year_col->min_rs(); Wrapper for ->func_rs for function MIN(). max Arguments: none Return Value: $highest_value my $last_year = $year_col->max(); Wrapper for ->func. Returns the highest value of the column in the resultset (or "undef" if there are none). max_rs Arguments: none Return Value: $resultset my $rs = $year_col->max_rs(); Wrapper for ->func_rs for function MAX(). sum Arguments: none Return Value: $sum_of_values my $total = $prices_col->sum(); Wrapper for ->func. Returns the sum of all the values in the column of the resultset. Use on varchar-like columns at your own risk. sum_rs Arguments: none Return Value: $resultset my $rs = $year_col->sum_rs(); Wrapper for ->func_rs for function SUM(). func Arguments: $function Return Value: $function_return_value $rs = $schema->resultset("CD")->search({}); $length = $rs->get_column('title')->func('LENGTH'); Runs a query using the function on the column and returns the value. Produces the following SQL: SELECT LENGTH( title ) FROM cd me func_rs Arguments: $function Return Value: $resultset Creates the resultset that "func()" uses to run its query. throw_exception See "throw_exception" in DBIx::Class::Schema for details. AUTHOR AND CONTRIBUTORS
See AUTHOR and CONTRIBUTORS in DBIx::Class LICENSE
You may distribute this code under the same terms as Perl itself. perl v5.18.2 2014-01-23 DBIx::Class::ResultSetColumn(3)
All times are GMT -4. The time now is 04:33 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy