Grep to match unknown pattern


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Grep to match unknown pattern
# 1  
Old 10-26-2009
Grep to match unknown pattern

Hi there

I would like to search a file for a certain pattern, but i don't know the exact pattern i need to search for.

What i do know is that i need to search for the pattern that exists the most in a certain file.

so if a file looksike this:

summer, summer, winter, spring, summer summer.

i would need a grep command to display summer, while summer is the pattern that exists the most.

regards chilly
# 2  
Old 10-26-2009
I think instead you want something to count occurences of unique words, That would be awk or perl, not grep.
# 3  
Old 10-26-2009
OK, I'll bite Smilie:

cat infile:
Code:
Hi there
I would like to search a file for a certain pattern, but i don't know the exact pattern i need to search for.
What i do know is that i need to search for the pattern that exists the most in a certain file.
so if a file looksike this:
summer, summer, winter, spring, summer summer.
i would need a grep command to display summer, while summer is the pattern that exists the most.
regards chilly

Code:
$> grep $(grep -o '\b[^[:space:]]*\b' infile |awk '{A[$1]++}END{for (i in A) print A[i],i}'|sort -n|tail -1|cut -d ' ' -f2) infile
summer, summer, winter, spring, summer summer.
i would need a grep command to display summer, while summer is the pattern that exists the most.

or do you mean:
Code:
$> grep -o '\b[^[:space:]]*\b' infile |awk '{A[$1]++}END{for (i in A) print A[i],i}'|sort -n|tail -1|cut -d ' ' -f2
summer


Last edited by Scrutinizer; 10-26-2009 at 07:49 PM..
# 4  
Old 10-27-2009
Thx for the replies.

Since in a newbie to Linux i hardly understand scrutinzers answer, although it's a very impressive command line SmilieSmilie

@Tony: have you got an example of how i would locatie the words that exist the most?
# 5  
Old 10-27-2009
The word that exist the most..

quick version could be this.. in perl.

Code:
while(<>)  {
    @arr = split /\b/, $_;
    foreach (@arr)  {
        $hash{$_}++ if not ( /\s+/ || /,/ );
    }
}

@arr = sort { $hash{$b} <=> $hash{$a} } keys %hash;
print $arr[0];

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Grep everything between two pattern if match not found

I need to help to work this Print everything between 2 patterns if grep is not found the search word example Detroit orange cat bat rat apple sed -n "/Detroit,/apple/p" d |grep chicago output would be Detroit orange cat bat rat (1 Reply)
Discussion started by: jhonnyrip
1 Replies

2. Shell Programming and Scripting

Pattern match using grep between two files

Hello Everyone , I have two files. I want to pick line from file-1 and match with the complete data in file-2 , if there is a match print all the match lines in file 3. Below is the file cat test1.txt vikas vikasjain j ain testt douknow hello@vik@ # 33 ||@@ vcpzxcmvhvdsh... (1 Reply)
Discussion started by: mailvkjain
1 Replies

3. Shell Programming and Scripting

Grep with unknown pattern?

Hi. I have a small problem that I haven't been able to find out of on my own. I am not much into bash scripting, however I use grep now and then when working on my code in order to locate specific objects, so I'll just state my exact problem: The code is huge, and has a function that is... (2 Replies)
Discussion started by: Morridini
2 Replies

4. Shell Programming and Scripting

unable to match grep pattern

Hi All, I am trying to select all files in a directory which are not with .gz extension . for which I am using below script , but its rejecting both .gz and .z extension files,as in each letter is considered separately. PFB ls -lrt | awk '{print $9}'| egrep "^IRAMS.*$" please suggest... (1 Reply)
Discussion started by: Jcpratap
1 Replies

5. Shell Programming and Scripting

awk or grep to match # of words before and after pattern

Pipe binary file matches grep results to file I am using grep to match a pattern, but the output is strange. $ grep -r -o "pattern" * Gives me: Binary file foo1 matches Binary file foo2 matches Binary file foo3 matches To find the lines before/after, I then have to use the... (1 Reply)
Discussion started by: chipperuga
1 Replies

6. Shell Programming and Scripting

grep - match files containing minimum number of pattern matches

I want to search a bunch of files and list only those containing a minimum number of pattern matches. So if I want to identify files containing 3 (or more) instances of the pattern "said:" and I have file1 that contains the lines: He said: She said: and file2 that contains the lines: He... (3 Replies)
Discussion started by: stumpyuk
3 Replies

7. Shell Programming and Scripting

shell script: grep multiple lines after pattern match

I have sql file containing lot of queries on different database table. I have to filter specific table queries. Let say i need all queries of test1,test2,test3 along with four lines above it and sql queries can be multi lines or in single line. Input file contains. set INSERT_ID=1; set... (1 Reply)
Discussion started by: mirfan
1 Replies

8. Solaris

Using grep to print just the pattern match

Hi all, Is it possible for grep to output just the pattern match and not the whole line when it comes across a match? I know you can adjust the number of trailing or leading lines that are printed, but am yet to find anything that outputs just the pattern match. Cheers, Tim (5 Replies)
Discussion started by: muzzaw
5 Replies

9. Shell Programming and Scripting

Pattern match in grep

Hi, I try to grep lines with pattern like float_or_int float_or_int float_or_int where float_or_int is any float or any integer of any length. I tried some : grep "* * *" FILENAME #Work for integers but not for floats grep '\<.*\> \<.*\> \<.*\>' FILENAME #Work for float but not... (4 Replies)
Discussion started by: tipi
4 Replies

10. UNIX for Dummies Questions & Answers

how to use pattern match with grep

hi, i'm having problem like this. i wish to grep some keyword from certain files in one directory. let's say i have a lot of files in my directory with the name of file.1 file.2 file.3 ...... file.500 i only wish to grep the keyword from file.20, file.21, file.23 .... file.50 i tried... (5 Replies)
Discussion started by: rei
5 Replies
Login or Register to Ask a Question