Grep pattern file and count occurances

 
Thread Tools Search this Thread
Top Forums UNIX for Beginners Questions & Answers Grep pattern file and count occurances
# 1  
Old 02-13-2018
Grep pattern file and count occurances

Guys
I am trying grep to read from pattern file and count occurances of each word.
input is

Code:
firstplace
secondplace
secondpot

patternfile is
Code:
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 result should be
Code:
place 0
first 1
second 2

2-count number of times keywords in patternfile occurs at end of each line in input file.


so result should be
Code:
place 2
first 0
second 0

i tried
Code:
grep -of patternfile input >result

but it didnt work.

any help here?

Last edited by RudiC; 02-13-2018 at 09:40 AM..
# 2  
Old 02-13-2018
Closest I can get quickly:
Code:
while read line; do echo "^$line"; done <file2 | grep -of- file1 | sort | uniq -c
      1 first
      2 second
while read line; do echo "$line\$"; done <file2 | grep -of- file1 | sort | uniq -c
      2 place

For sth. more refined you might need an awk (or equivalent) solution.
This User Gave Thanks to RudiC For This Post:
# 3  
Old 02-13-2018
Is this homework/coursework?
# 4  
Old 02-13-2018
let variable a is your keyword list, then
let d a file
Code:
$ cat d
firstplace
secondplace
secondpot

a='first second place pot'

for o in $a; do
 echo $o at the beginning of line is `grep -Poce '^'$o'' d` time; echo $o at the second following the previous found is `grep -Poce '^\w+?'$o'' d` time;echo
done

first at the beginning of line is 1 time
first at the second following the previous found is 0 time

place at the beginning of line is 0 time
place at the second following the previous found is 2 time

second at the beginning of line is 2 time
second at the second following the previous found is 0 time

pot at the beginning of line is 0 time
pot at the second following the previous found is 1 time

# 5  
Old 02-13-2018
a bit verbose, but....
awk -f ah.awk patternFile inputFile
where ah.awk is:
Code:
FNR==NR {
  f2[$0]
  next
}
{
  for(i in f2) {
    if($0 ~ ("^"i))
      beg[i]++
    if($0 ~ (i"$")) {
      end[i]++
  }
}
}
END {
    print "begining"
    for(i in f2)
       print i,beg[i]+0

    print "\nend"
    for(i in f2)
       print i,end[i]+0
}

This User Gave Thanks to vgersh99 For This Post:
# 6  
Old 02-13-2018
Quote:
Originally Posted by RudiC
Closest I can get quickly:
Code:
while read line; do echo "^$line"; done <file2 | grep -of- file1 | sort | uniq -c
      1 first
      2 second
while read line; do echo "$line\$"; done <file2 | grep -of- file1 | sort | uniq -c
      2 place

For sth. more refined you might need an awk (or equivalent) solution.
Rudi thanks.
your command works fine but as both files are huge grep fails i think.
can you give me something equivalent in awk?

---------- Post updated at 10:04 PM ---------- Previous update was at 09:58 PM ----------

Quote:
Originally Posted by vgersh99
a bit verbose, but....
i think awk is the solution as both files are huge but ah.awk you gave doesnt work..the script just keeps running.no output.
can you check if there is any error in the codes please?

---------- Post updated at 10:22 PM ---------- Previous update was at 10:04 PM ----------

for my ah.awk i tried adding #! /usr/bin/awk -f in the top line.
still didnt work.

thanks guys for helping.

---------- Post updated at 10:30 PM ---------- Previous update was at 10:22 PM ----------

i think the issue here is not grep.
i think the while read line doesnt work for big files.
how do i replace it with awk?
# 7  
Old 02-14-2018
Quote:
Originally Posted by ahfze
Rudi thanks.
your command works fine but as both files are huge grep fails i think.
can you give me something equivalent in awk?

---------- Post updated at 10:04 PM ---------- Previous update was at 09:58 PM ----------



i think awk is the solution as both files are huge but ah.awk you gave doesnt work..the script just keeps running.no output.
can you check if there is any error in the codes please?

---------- Post updated at 10:22 PM ---------- Previous update was at 10:04 PM ----------

for my ah.awk i tried adding #! /usr/bin/awk -f in the top line.
still didnt work.

thanks guys for helping.

---------- Post updated at 10:30 PM ---------- Previous update was at 10:22 PM ----------

i think the issue here is not grep.
i think the while read line doesnt work for big files.
how do i replace it with awk?
works on the sample files you gave me. there must be something different with your actual files - and not just the size.

do cat -vet patternFile and post a sample output here (using code tags).
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

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

2. Shell Programming and Scripting

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!:) 58 80 40.74 76 80 9.78 76 80 8 12 6 9 30 28 8.23 45 12 ... (13 Replies)
Discussion started by: andreaalex
13 Replies

3. Shell Programming and Scripting

Search for a pattern in a String file and count the occurance of each pattern

I am trying to search a file for a patterns ERR- in a file and return a count for each of the error reported Input file is a free flowing file without any format example of output ERR-00001=5 .... ERR-01010=10 ..... ERR-99999=10 (4 Replies)
Discussion started by: swayam123
4 Replies

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

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

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

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

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

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

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