awk count occurences


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting awk count occurences
# 1  
Old 06-07-2013
awk count occurences

line number:status, market, keystation
Code:
1,SENT,EBS,1 : 1
2,DONE,REU,1 : 1
3,SENT,EBS,2 : 1
4,DONE,EBS,1 : 0
5,SENT,EBS,2 : 0
6,SENT,EBS,2 : 0
7,SENT,EBS,2 : 0
8,SENT,EBS,1 : 1

for each status, market combination I want to keep a tally of active orders. i.e if an order is SENT, then +1, if it is DONE -1.

I can do this for one combination

Code:
 awk -F, 'BEGIN {total=0} /SENT.*EBS.*1/ {total += $4} /DONE.*EBS.*1/ {total -= $4} {print $0,":", total} END{print "***\nEND\n***"}' file

How can I keep a tally for each combination. The output I would like is:
Code:
1,SENT,EBS,1 : 1
2,DONE,REU,1 : -1
3,SENT,EBS,2 : 1
4,DONE,EBS,1 : 0
5,SENT,EBS,2 : 2
6,SENT,EBS,2 : 3
7,SENT,EBS,2 : 4
8,SENT,EBS,1 : 1

Thanks

Last edited by vbe; 06-07-2013 at 10:03 AM..
# 2  
Old 06-07-2013
Can you please elaborate on your conditions.
not clear what exactly you want.
# 3  
Old 06-07-2013
Hi Pamu,

Sorry I did word it badly, let me try again..

I want to have a count of active orders for each marketplace, keystation combination. The count should be incremented on a 'SENT' order and decremented on a 'DONE' order.

So for example if we had just one marketplace,keystation combination the count would look like this:

status,marketplace, keystation : count
SENT,EBS,1 : 1
SENT,EBS,1 : 2
DONE,EBS,1 : 1
DONE,EBS,1 : 0
# 4  
Old 06-07-2013
try

Code:
$awk -F "[,:]" '{if($2=="SENT"){A[$3,$4+0]+=1}else{A[$3,$4+0]-=1} print $1,$2,$3,$4+0" : "A[$3,$4+0]}' OFS="," file

1,SENT,EBS,1 : 1
2,DONE,REU,1 : -1
3,SENT,EBS,2 : 1
4,DONE,EBS,1 : 0
5,SENT,EBS,2 : 2
6,SENT,EBS,2 : 3
7,SENT,EBS,2 : 4
8,SENT,EBS,1 : 1

This User Gave Thanks to pamu For This Post:
# 5  
Old 06-07-2013
Pamu:
I am very much interested in learning new things in Unix... so would you please explain the logic here?
1. What is [,:]? I guess two field separators, how they work?
2. What is A[$3,$4+0] here? Why 0 is used??
Thanks a ton in advance !
# 6  
Old 06-07-2013
Thanks Pamu, I see your storing the index's in a 2D array, thats clever.

Thanks again!
# 7  
Old 06-07-2013
Quote:
Originally Posted by juzz4fun
Pamu:
I am very much interested in learning new things in Unix... so would you please explain the logic here?
1. What is [,:]? I guess two field separators, how they work?
2. What is A[$3,$4+0] here? Why 0 is used??
Thanks a ton in advance !
1. [,:] --> Yes. We use this for two separate field separators.
Code:
1  2    3  4   5 fields
1,SENT,EBS,1 : 1

2. As you can see $4 is having spaces around. so we have to remove spaces. that's why i've added 0 to it. Adding 0 makes it number.

Hope this helps you Smilie

pamu
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Count occurences of the word without it repeating

Hi, I would like to count the number of ALA occurences without having them to be repeated. In the script I have written now it has 40 repetitions of ALA but it has to be 8. ALA is chosen as one of the 20 values it can have when the script asks for the input of AAA, which for this example is chosen... (7 Replies)
Discussion started by: Aurimas
7 Replies

2. Shell Programming and Scripting

Count the occurences of strings

I have some text files in a folder f1 with 10 columns. The first five columns of a file are shown below. aab abb 263-455 263 455 aab abb 263-455 263 455 aab abb 263-455 263 455 bbb abb 26-455 26 455 bbb abb 26-455 26 455 bbb aka 264-266 264 266 bga bga 230-232 230 ... (10 Replies)
Discussion started by: gomez
10 Replies

3. Shell Programming and Scripting

[solved]awk count occurences in time window

Input File Time, KeyStation 00:00:00,000;KS_1 00:00:01,000;KS_1 00:00:02,000;KS_1 00:00:03,000;KS_1 00:00:04,000;KS_1 00:00:05,000;KS_1 00:00:06,000;KS_1 00:01:01,000;KS_1 00:01:02,000;KS_1 00:01:03,000;KS_1 00:01:04,000;KS_1 00:01:05,000;KS_1 00:01:06,000;KS_1 01:00:01,000;KS_1... (0 Replies)
Discussion started by: Calypso
0 Replies

4. Shell Programming and Scripting

Count number of occurences using awk

Hi Guys, I have 2 files like below file1 xx yy file2 b yy b2 xx c1 yy xx yy Now I want an idea which can count occurences of text from file1 and file2 so outbout would be kind of (9 Replies)
Discussion started by: prashant2507198
9 Replies

5. Shell Programming and Scripting

Count occurences based on interval

Hi, I have a file which has 4500 entries 10000 9880 9800 8700 8200 ... ..... ... ... ... ... ... ... ... 50 (1 Reply)
Discussion started by: Diya123
1 Replies

6. UNIX for Dummies Questions & Answers

Count pattern occurences

hi, I have a text..and i need to find a pattern in the text and count to the no of times the pattern occured. i have used grep command ..but the problem is , it shows the occurrences of the pattern but doesn't count no of times the pattern occuries. (5 Replies)
Discussion started by: nvnni
5 Replies

7. Shell Programming and Scripting

Count occurences of string

Hi, Please help me in finding the number of occurences of the string. Example: Apple, green, blue, Apple, Orange, green, blue are the strings can be even in the next line. The o/p should look as: Word Count ----- ----- Apple 2 green 2 Orange 1 blue 2 Thanks (2 Replies)
Discussion started by: acc888
2 Replies

8. Shell Programming and Scripting

Awk to count occurences

Hi, i am in need of an awk script to accomplish the following: Input table looks like: Student1 arts Student2 science Student3 arts Student4 science Student5 science Student6 science Student7 science Student8 science Student9 science Student10 science Student11 science... (8 Replies)
Discussion started by: saint2006
8 Replies

9. Shell Programming and Scripting

to count the number of occurences of a column value

im trying to count the number of occurences of column 2 value(starting from KKK*) of the below file, file.txt using the code cat file.txt | awk ' BEGIN { print "Category Counts"} {FS=","} {NR > 2} { cats = cats + 1} END { for(c in cats) { print c, "=", cats} } ' but its returning as ... (6 Replies)
Discussion started by: michaelrozar17
6 Replies

10. Shell Programming and Scripting

Perl - Count occurences

I have enclosed the script. I am able to find the files that contain my search string but when I try to count the occurences within the file I get zero always. Any help on this. #!/usr/bin/perl my $find = $ARGV; my $replace = $ARGV; my $glob = $ARGV; @filelist = <*$glob>; # process each... (22 Replies)
Discussion started by: TimHortons
22 Replies
Login or Register to Ask a Question