How to count number of results found?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting How to count number of results found?
# 1  
Old 02-18-2013
How to count number of results found?

Hi guys,

I'm struggling with this one, any help is appreciated.

I have File1 with hundreds of unique words, like this:
Code:
word1
word2
word3

I want to count each word from file1 in file2 and return how many times each word is found.

I tried something like this:
Code:
for i in $(cat file1); do echo -n "$i ";tr -s ' ' '\n' < file2| grep -c "$i ";done > temp03

but its returning zero for every word even if it does exist.

Can you please help?

Thanks a lot!

Last edited by Franklin52; 02-19-2013 at 04:03 AM.. Reason: Please use code tags for data and code samples
# 2  
Old 02-18-2013
Try something like:
Code:
while read word
do
        c=$( tr ' ' '\n' < file2 | grep -c "${word}" )
        echo "${word} ${c}"
done < file1

This User Gave Thanks to Yoda For This Post:
# 3  
Old 02-18-2013
Code:
#!/bin/ksh

FILE1=x1.dat
FILE2=x2.dat

while read word
do
  # -w option to grep for searching on a word boundary.
  count=$( grep -wc "$word" $FILE2 )
  printf "%s: %d\n" "$word" $count
done < $FILE1

exit 0

Code:
$ cat x1.dat
word1
word2
word3
$ cat x2.dat
word1
word2
word3
word1
word2
word3oword1
word2
word2
word2
word3
word3
word3
word3 word3word3
$ ./x
word1: 2
word2: 5
word3: 5
$

I would advise against using tr, since that translation of the entire file is happening for each word in FILE1.

Last edited by gary_w; 02-18-2013 at 07:02 PM..
This User Gave Thanks to gary_w For This Post:
# 4  
Old 02-19-2013
Code:
for i in $(cat file1); do echo -n "$i ";tr -s ' ' '\n' < file2| grep -c "$i ";done > temp03

change echo -n to echo.
This User Gave Thanks to nithinsen For This Post:
# 5  
Old 02-19-2013
Using gary_w's files, would this satisfy your needs:
Code:
$ grep -of x1.dat x2.dat| sort |uniq -c
      3 word1
      5 word2
      8 word3

---------- Post updated at 12:50 ---------- Previous update was at 12:44 ----------

Quote:
Originally Posted by nithinsen
Code:
for i in $(cat file1); do echo -n "$i ";tr -s ' ' '\n' < file2| grep -c "$i ";done > temp03

change echo -n to echo.
That wouldn't help. Remove the space in grep's "$i " parameter...
This User Gave Thanks to RudiC For This Post:
# 6  
Old 02-19-2013
Note that RudiC's method counts the word if it is part of another word. I do not know if this is the desired result as the original spec did not get that detailed. Just sayin'.
This User Gave Thanks to gary_w For This Post:
# 7  
Old 02-19-2013
Well, then, use the -w switch to grep. This then would yield exactly gary_w's result. But I'm not sure that this will work on all grep versions.
This User Gave Thanks to RudiC For This Post:
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 command to show the number of results

Hi I wanted to know if there is an option in grep command to show the number of results (not the number of lines of findings). Thanks (14 Replies)
Discussion started by: abdossamad2003
14 Replies

2. Shell Programming and Scripting

Count occurences of a character in a file by sorting results

Hello, I try to sort results of occurences in an array by using awk but I can't find the right command. that's why I'm asking your help ! :) Please see below the command that I run: awk '{ for ( i=1; i<=length; i++ ) arr++ }END{ for ( i in arr ) { print i, arr } }' dictionnary.txt ... (3 Replies)
Discussion started by: destin45
3 Replies

3. Shell Programming and Scripting

awk Help -- If match found return the count

Hi All, I need to get the count of records in the file, if the passing parameter matches with the list of records in the file. Below is my example source file: Test1.dat 20120913 20120913 20120912 20120912 20120912 20120912 20120912 20120913 20120913 20120912 In my script I am... (5 Replies)
Discussion started by: bbc17484
5 Replies

4. Shell Programming and Scripting

how to add the number of row and count number of rows

Hi experts a have a very large file and I need to add two columns: the first one numbering the incidence of records and the another with the total count The input file: 21 2341 A 21 2341 A 21 2341 A 21 2341 C 21 2341 C 21 2341 C 21 2341 C 21 4567 A 21 4567 A 21 4567 C ... (6 Replies)
Discussion started by: juelillo
6 Replies

5. Shell Programming and Scripting

Awk - Count instances of a number in col1 and put results in a col2 (new) of diff file

I have 2 files as follows: filename1: : 6742 /welcome/mundial98_ahf1_404.htm 1020 6743 /welcome/mundial98_ahf1_404.htm 2224 6744 /welcome/mundial_ef1_404.htm 21678 6745 /welcome/mundial_if_404.htm 4236 6746 /welcome/mundial_lf1_404.htm 21678 filename2: 6746 894694763 1... (2 Replies)
Discussion started by: jontjioe
2 Replies

6. Shell Programming and Scripting

found count of them

Hi guys i must write a program which read logfile of my program and print the result. i wrote this and i want print of the user who have virus. i extract user and put it in file, now i want know each user have how many virus. how can i do this in bash, my file is like: and soso i... (5 Replies)
Discussion started by: Skipper
5 Replies

7. Shell Programming and Scripting

count the number of lines that start with the number

I have a file with contents similar to this. abcd 1234 4567 7666 jdjdjd 89289 9382 92 jksdj 9823 298 I want to write a shell script which count the number of lines that start with the number (disregard the lines starting with alphabets) (1 Reply)
Discussion started by: grajp002
1 Replies

8. UNIX for Dummies Questions & Answers

putting grep -c results number in a variable

I want to display "no results found" if a grep search of a name that the user inputs is not found anywhere in a certain file, Right now I have this, but doesn't seem to work. Im not sure what to change. read name results=grep -c $name file if ; then echo "No results found." exit... (1 Reply)
Discussion started by: busdude
1 Replies

9. Shell Programming and Scripting

Number count per number ranges

Hi, I have a question here that need to get advise from all of you. Let say I have a set of data 12347777 12359899 12347677 12360090 12347688 12359979 12359009 12367022 12346677 I need to count the number that appear in each numbering ranges and the output is like below: Prefix ... (5 Replies)
Discussion started by: shirleyeow
5 Replies

10. UNIX for Dummies Questions & Answers

awk | stop after specified number of results

I am searching some rather large text files using grep and or awk. What I would like to know is if there is a way (either with grep, awk, or realy any other unix tool) to stop the search when a predifined number of results are returned. I would like to do this for speed purpuses. When i get... (6 Replies)
Discussion started by: evan108
6 Replies
Login or Register to Ask a Question