Visit Our UNIX and Linux User Community


Shell script - group by


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Shell script - group by
# 8  
Old 05-05-2014
Add sth like B[$i]++ alongside the A[$i] summing, and then divide by B[k] when outputting.
# 9  
Old 05-05-2014
Lightbulb

I tried, but some syntax error. can you please incorporate B($i)++ in the below Awk script?

Code:
awk '
        {
                for ( i = 1; i <= NF; i += 2 )
                        A[$i] += $( i + 1 )
        }
        END {
                for ( k in A )
                        printf "%s %s ", k, A[k]
                printf "\n"
        }
' file

Moderator's Comments:
Mod Comment Please supply CODE and ICODE tags as required by forum rules on your own. Don't assume that moderators always have time to clean up after you.

Last edited by Don Cragun; 05-05-2014 at 07:13 PM.. Reason: Add CODE and ICODE tags.
# 10  
Old 05-05-2014
What's so difficult about using code tags?
# 11  
Old 05-06-2014
I put the first half for you, along with a small fix (not adding a not existing $(NF+1)):
Code:
awk '
{
  for ( i = 2; i <= NF; i += 2 ) {
    A[$i] += $i
    B[$i]++
  }

The second half is left as an exercise.

Previous Thread | Next Thread
Test Your Knowledge in Computers #190
Difficulty: Easy
In computer science, a data type is an attribute of data which informs the compiler or interpreter how the programmer intends to use the data.
True or False?

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Emulate group-by in shell script

Hello All, I saw this problem on one of the forum and solved it using group-by in oracle sql, though I am a bit curious to implement it using shell script : There is a file having number of operations : Opeation,Time-Taken operation1,83621 operation2,72321 operation3,13288... (11 Replies)
Discussion started by: mukulverma2408
11 Replies

2. Shell Programming and Scripting

Shell Script to Group by Based on Multiple Fields in a file

Hi, I want to know if there is any simple approach to SUM a field based on group by of different fields for e.g. file1.txt contains below data 20160622|XXX1||50.00||50.00|MONEY|Plan1| 20160622|XXX1||100.00||100.00|MONEY|Plan1| 20160623|XXX1||25.00||25.00|MONEY|Plan1|... (3 Replies)
Discussion started by: cnu_theprince
3 Replies

3. Shell Programming and Scripting

Help me to perform count & group by operation in shell scripting?

Hi All, I want to display the distinct values in the file and for each distinct value how may occurance or there. Test data: test1.dat 20121105 20121105 20121105 20121105 20121106 20121106 20121106 20121105 I need to display the output like Output (2 Replies)
Discussion started by: bbc17484
2 Replies

4. Shell Programming and Scripting

Help Linux Shell Group exists

I am having some problems when writing shell as follows: shell runs but returns no results echo "enter group name: " dir="/home" read group if id -g $group > /dev/null 2>&1 then echo "group exits" else echo... (6 Replies)
Discussion started by: kingkner
6 Replies

5. Shell Programming and Scripting

Shell Script to ignore # and take corresponding user and group

Hi, I have a following file: role.IMPACT_USER.user=admin role.IMPACT_USER.user=dd12345 role.IMPACT_USER.user=ss76767 #role.IMPACT_USER.user=root #role.IMPACT_USER.group=System role.IMPACT_USER.group=ImpactUser #Description: Allow users to login in to Impact, start and stop service... (5 Replies)
Discussion started by: dbashyam
5 Replies

6. Solaris

su: No shell/No directory! if sys is added to a users secondary group

Hi, When I include a user to the secondary group "sys" GID=3 in Solaris 9 OS I'm not able to login. I get these error. The user home directory and the shell exists. Is this because of any security hardening. # su - agent No directory! # su agent su: No shell # grep taddm /etc/passwd... (14 Replies)
Discussion started by: agent001
14 Replies

7. Shell Programming and Scripting

"group by" using shell script?

not sure if it's called "group by" , but what i'm going to do is like this: i have a file below: 192.168.1.10 192.168.1.10 192.168.1.10 192.168.1.11 192.168.1.15 192.168.1.15 192.168.1.20 192.168.1.22 then i hope to get the result like this: 192.168.1.10 : 3 192.168.1.11 : 1... (6 Replies)
Discussion started by: tiger2000
6 Replies

8. Shell Programming and Scripting

Shell script to rename a group of files

Hello, I am having 1800 files in a directory with a specified format, like amms_850o_prod.000003uNy amms_850o_prod.000003u8x amms_850o_prod.000003taP amms_850o_prod.000003tKy amms_850o_prod.000003si4 amms_850o_prod.000003sTP amms_850o_prod.000003sBg amms_850o_prod.000003rvx... (12 Replies)
Discussion started by: atlantis
12 Replies

9. Shell Programming and Scripting

HELP! Group by in shell script (awk/sed?)

Hello, Could some expert soul please help me with this? I have following file format - task time abc 5 xyz 4 abc 5 xyz 3 ddd 10 ddd 2 I need to generate output as - task ... (5 Replies)
Discussion started by: sncoupons
5 Replies

Featured Tech Videos