Shell - sum of column on user


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Shell - sum of column on user
# 1  
Old 05-02-2018
Shell - sum of column on user

Basically, I've two columns. First one stands for the users and the second one for the time they've spent on the server. So I'd like to sum for each client, how many minutes did he spend on the server.

Code:
user1 21:03
user2 19:55
user3 20:09
user1 18:57
user1 19:09
user3 21:05
user4 19:57

Let's say that I've this. I know how to split but there's one problem. Whenever I do
Code:
awk -F: '{print $1}

it prints users and the first parameter of the time (the number before Smilie, and when I do
Code:
awk -F: '{print $2}

it prints only the numbers after :. After all of the sum, I'd like to get something like

Code:
user1 59:09
user2 19:55
user3 41:14
user4 19:57

# 2  
Old 05-02-2018
Welcome to the forum.

Time and date arithmetics is one of the worst (most difficult) things in IT. Some awk versions (e.g. gawk) offer date & time functionality; mine doesn't, so I can offer a crude approximation.
Try someting along this line:
Code:
awk -F"[ :]" '{SUM[$1] += $2*60 + $3} END {for (s in SUM) print s, int(SUM[s]/60) ":" SUM[s]%60}' file
user1 59:9
user2 19:55
user3 41:14
user4 19:57

Formatting refinement left as an exercise to the reader...
# 3  
Old 05-04-2018
To elaborate a little on what my learned friend RudiC has, the -F you had written was to replace the field separator of 'any white space' with a colon, so the space was being treated as any other character. Sometimes, you might want this to happen.

What the suggestion does is allow you to split fields on either a space or a colon giving you three fields. I just thought I should comment on where you were stuck/confused in your original post.

Now you have something to work with - and there is a completed suggestion to do the maths.




Kind regards,
Robin
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

awk to Sum columns when other column has duplicates and append one column value to another with Care

Hi Experts, Please bear with me, i need help I am learning AWk and stuck up in one issue. First point : I want to sum up column value for column 7, 9, 11,13 and column15 if rows in column 5 are duplicates.No action to be taken for rows where value in column 5 is unique. Second point : For... (1 Reply)
Discussion started by: as7951
1 Replies

3. UNIX for Beginners Questions & Answers

Sum the values in the column using date column

I have a file which need to be summed up using date column. I/P: 2017/01/01 a 10 2017/01/01 b 20 2017/01/01 c 40 2017/01/01 a 60 2017/01/01 b 50 2017/01/01 c 40 2017/01/01 a 20 2017/01/01 b 30 2017/01/01 c 40 2017/02/01 a 10 2017/02/01 b 20 2017/02/01 c 30 2017/02/01 a 10... (6 Replies)
Discussion started by: Booo
6 Replies

4. UNIX for Dummies Questions & Answers

Match sum of values in each column with the corresponding column value present in trailer record

Hi All, I have a requirement where I need to find sum of values from column D through O present in a CSV file and check whether the sum of each Individual column matches with the value present for that corresponding column present in the trailer record. For example, let's assume for column D... (9 Replies)
Discussion started by: tpk
9 Replies

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

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

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. UNIX for Dummies Questions & Answers

How to sum rows in e.g. column 1 by a category in e.g. column 2

Hi, I've shown an example of what I would like to achieve below. In the example file, I would like to sum the values in column 2 for each distinct category in column 3 (presumably making an array?) and print the sum as well as the category name and length (note:length always corresponds with... (8 Replies)
Discussion started by: auburn
8 Replies

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

10. UNIX for Advanced & Expert Users

sum of more than 1 column

Hi I want to sum of 3 columns in file. Example: I want to sum of 3 ,6,8 th columns in file(SUM(3,6,8)). Using awk can sum of single column awk '{a+=$3} END {printf ("%f\n",a)' file_name Thanks inadvance MR (2 Replies)
Discussion started by: mohan705
2 Replies
Login or Register to Ask a Question