Count the occurances of numbers


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Count the occurances of numbers
# 1  
Old 06-01-2013
Count the occurances of numbers

I have a file as shown below. I need to count the unique occurrences of numbers in the first and second column only if the third column is <= 10. Otherwise print the corresponding numbers as zero.

Thanks in advance!Smilie

Code:
58  80  40.74
76  80  9.78
76  80 8
12  6   9
30 28   8.23
45 12   6.56
45 12 7
12 50   49.24


output

Code:
58  0
76  1
12  2
30  1
45  1
80  1
6    1 
28  1
50  0


Last edited by Scrutinizer; 06-02-2013 at 04:50 AM.. Reason: code tags
# 2  
Old 06-01-2013
An awk approach:
Code:
awk '
        $3 <= 10 {
                A[$1]++
                A[$2]++
        }
        {
                R[$1]
                R[$2]
        }
        END {
                for ( k in R )
                        print k, A[k] ? A[k] : "0"
        }
' file

# 3  
Old 06-01-2013
Thank you very much for your answer. I would like to get the unique occurrences of numbers. How to change your code for getting unique occurrences? I am new to awk. If you can , please help me.
# 4  
Old 06-01-2013
What do you mean by unique occurrences?

I get below output:
Code:
80 1
45 1
28 1
6 1
76 1
58 0
30 1
12 2
50 0

which matches your required output except the order is different because the order in which awk for loop visits an array is not defined.
# 5  
Old 06-01-2013
Here is another way to do it in awk (using only one array) as long as the output order doesn't matter:
Code:
awk '
{       c[$1] += ($3 <= 10)
        c[$2] += ($3 <= 10)
}
END {   for(i in c) print i, c[i]}' file

and, if the order does matter, the following script will produce output in the same order as the output shown in the 1st message in this thread:
Code:
awk '
{       c[$1] += ($3 <= 10)
        c[$2] += ($3 <= 10)
        c1[++lc] = $1
        c2[lc] = $2
}
END {   for(i = 1; i <= lc; i++)
                if(c1[i] in c) {
                        print c1[i], c[c1[i]]
                        delete c[c1[i]]
                }
        for(i = 1; i <= lc; i++)
                if(c2[i] in c) {
                        print c2[i], c[c2[i]]
                        delete c[c2[i]]
                }
}' file

If you are using a Solaris/SunOS system, use /usr/xpg4/bin/awk, /usr/xpg6/bin/awk, or nawk instead of awk for both of these scripts.

Last edited by Don Cragun; 06-01-2013 at 01:05 PM.. Reason: Fixed <= 10 instead of < 10 bug.
# 6  
Old 06-01-2013
Hi yoda,

I have edited my input. In the input, some lines have repeated. I don't need to count the repeated lines.
# 7  
Old 06-01-2013
Quote:
Originally Posted by andreaalex
Hi yoda,

I have edited my input. In the input, some lines have repeated. I don't need to count the repeated lines.
Do you just want to skip exactly matching lines, or do you want to skip all lines where 1st two fields appear in the same order as in a previous line?

And: Does the output order matter?
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Grep pattern file and count occurances

Guys I am trying grep to read from pattern file and count occurances of each word. input is firstplace secondplace secondpot patternfile is place first second i want the following. 1-count number of times keywords in patternfile occurs in begining of each line in input file. so... (12 Replies)
Discussion started by: ahfze
12 Replies

2. Shell Programming and Scripting

Count the number of occurances for multiple files

I have some text files as shown below. I would like to add the values of each string. Your help would be appreciated!! file1.txt SUS 2 PRS 2 ALI 1 PRS 1 GLK 2 file2.txt PRS 3 GLK 6 SUS 18 Desired output SUS 20 PRS 6 (2 Replies)
Discussion started by: arch
2 Replies

3. Shell Programming and Scripting

How to count number of occurances of string in a file?

Gurus, Need little guidance. I have A.txt and B.txt file. B.txt file contains Unique strings. Sample content of B.txt file for which i cut the fourth column uniquely and output directed to B.txt file And A.txt file contains the above string as a fourth column which is last column. So A.txt... (7 Replies)
Discussion started by: Shirisha
7 Replies

4. Shell Programming and Scripting

Count occurances of X Y Z in a file in 1 go.

Hi. I need to count multiple occurrences of X Y Z in a file in 1 go. At the moment I have the following scripts: ssh readonly@$ServerIP 'YEAR=xx;DAY=xx;MONTH=xx;LMONTH=xx;for i in 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 \ 16 17 18 19 20 21 22 23; do cat... (13 Replies)
Discussion started by: msullivan
13 Replies

5. Shell Programming and Scripting

nawk-how count the number of occurances of a pattern, when don't know the pattern

I've written a script to count the total size of SAN storage LUNs, and also display the LUN sizes. From server to server, the LUNs sizes differ. What I want to do is count the occurances as they occur and change. These are the LUN sizes: 49.95 49.95 49.95 49.95 49.95 49.95 49.95 49.95... (2 Replies)
Discussion started by: cyber111
2 Replies

6. UNIX for Dummies Questions & Answers

Count occurances in a file

Hi, I have a fixed width file in the following format Sr.No A.No Name 1 2 PPP 3 4 PPP 5 6 TTT 7 8 OOO 9 10 OOO 11 12 OOO The 3rd column starts at position 10 and ends at 15. I want to count the number of occurances of each Name and output to a file Example in the... (2 Replies)
Discussion started by: samit_9999
2 Replies

7. Shell Programming and Scripting

Count occurances of a character in a file

I want to find the number of occurences of a character in a file. How do i do it. Eg: $cat file1.txt Welcome to World of Unix. $ If i want to find the occurences of 'o' then I should be getting 3. Thanks. (6 Replies)
Discussion started by: Shivdatta
6 Replies

8. Shell Programming and Scripting

count the number chracters occurances in a line

Hi Could anybody tell me how to count the number of occurances of a character within a LINE. actually i have a single line with words seperated with '+' chracter e.g. abc+def+ghj+jkl+asd i want to separte the words above. Please provide the necessary logic in the form of a SHELL... (6 Replies)
Discussion started by: skyineyes
6 Replies

9. Shell Programming and Scripting

Count if numbers are not repetitive

Hi All, I have an input below and i would want to do a count on all the term "aaa" and count only once if the number in first column is the same. For eg, if i use a "grep -c aaa input" command, the count will be "8". However, i would want the count to be "6" instead since 2 numbers in the 1st... (7 Replies)
Discussion started by: Raynon
7 Replies

10. Shell Programming and Scripting

Find occurances of a directory and count

I am writing my first shell script to do the following: Find all occurrences of a directory from the pwd Delete the directory (which is a hidden directory) Provide feedback w/ the number of directories deleted The problems I am having are two-fold: The user may not have the appropriate... (2 Replies)
Discussion started by: stringman
2 Replies
Login or Register to Ask a Question