Count the occurences of strings


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Count the occurences of strings
# 1  
Old 02-24-2014
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.

Code:
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  232
bga bga  230-232  230  232

I want to count the unique number of each string in the first and second columns based on the numbers of third column (or fourth and fifth column). I used the following program.

Code:
for i in f1/*.txt;
do
awk '
BEGIN {
    path=sprintf("%s", "/home/gomez/Desktop/f2/")
}
!s[1":"$1":"$3]++{sU[$1]++;tot++} 
!s[2":"$2":"$3]++{sU[$2]++;tot++} 
END { 
    sub(/.*\//,"",FILENAME)
    for (x in sU) 
        print x, sU[x] > path FILENAME;
        print "Total No -",tot > path FILENAME;
}'  $i;
 done

Output of the program

Code:
bga 1
aab 1
bbb 2
aka 1
bga 1
abb 2
Total No - 8

But I would like to get the output like this.

Code:
bga 230  1
bga 232  1
aab 263  1
abb 455  2
aka 266  1
bbb 26    1
bbb 264  1

Total No - 8

I would like to print the values of each string as second column. The values are in the third column(or fourth and fifth column) of the input files.

your help would be appreciated!!

Last edited by gomez; 02-24-2014 at 04:04 AM..
# 2  
Old 02-24-2014
Welcome to the forum gomez,
Could you please describe your logic. I am confused.
bbb - 26, having two entries, but you expecting one.

When you say count based on third column, please specify the meaning of first and second number (separated by hyphen) and how they are being used to count.
# 3  
Old 02-24-2014
yes. bbb 26 has two entries. But I need to print only unique occurrences. In the same way, aab 263 has 3 entries. I need to count it as one. Hope you can understand my logic.
# 4  
Old 02-24-2014
Do you mean this?

Code:
$awk '{a[$1FS$4FS$5]++;a[$2FS$4FS$5]++} END { for (i in a){print i FS a[i]}}' file
abb 263 455 3
abb 26 455 2
bga 230 232 4
bbb 26 455 2
aka 264 266 1
bbb 264 266 1
aab 263 455 3
$

# 5  
Old 02-24-2014
No. My desired output has shown above.
# 6  
Old 02-24-2014
So, As you said, this should be counted as one.

Code:
aab abb  263-455  263  455
aab abb  263-455  263  455
aab abb  263-455  263  455


Why this should be counted as two?
Code:
bga bga  230-232  230  232
bga bga  230-232  230  232

I see no difference in both cases.

Please look carefully, on your input file and desired output and make sure you are not missing anything. I also see you edited the data from the original.
# 7  
Old 02-24-2014
I need to count the strings in the first and second column even if the strings are same. I have 2 bga in the output because one bga is from the first column, its value is 230 and the other is from the second column, its value is 232. Like this, aab and abb has counted separately. aab is from the first column and abb is from the second column.
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

awk count occurences

line number:status, market, keystation 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... (8 Replies)
Discussion started by: Calypso
8 Replies

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

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

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

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

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

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

9. Shell Programming and Scripting

How to count the number of occurences of this pattern?

Hi all, I have a pattern like this in a file: 123 4 56 789 234 5 67 789 121 3 56 789 222 4 65 789 321 6 90 100 478 8 40 789 243 7 80 789 How can I count the number of occurences of '789' (4th column) in this set...? Thanks for all your help! K (7 Replies)
Discussion started by: kripssmart
7 Replies

10. UNIX for Dummies Questions & Answers

Counting occurences of different strings in a file

Hi, i'd like to know if the following is possible with a shell script, and can't find the answer in the search. Suppose i have a logfile build like this: # 8 :riuyzp1028 # 38 : riuyzp1028 # 25 : riuyvzp1032 # 30 : nlkljpa0202 # 1 : nlklja0205 # 38 : riuyzp1028 # 25 :... (4 Replies)
Discussion started by: Freerider
4 Replies
Login or Register to Ask a Question