Search for a pattern


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Search for a pattern
# 1  
Old 02-21-2008
Question Search for a pattern

I want to write a command to search in a list of files, the files that contain a pattern for a number of times between Min and Max

But I don't know how to do it.

Can anyone give me advice?
# 2  
Old 02-21-2008
Can you please be precise. What is the input and what is the output.
# 3  
Old 02-21-2008
Tools A start, based on the general info provided

Code:
pattern="abcdefg"
for zf in *.dat; do
   numpat=$(cat $zf | grep "$pattern" | wc -l)

   not sure what you want to do next
      perhaps verify $numpat is in a range min-max ?

done

If you provide some sample text and output, it might be easier to take this further.
# 4  
Old 02-21-2008
I want to write a script, with these arguments:
- the pattern to find in a file (that is text)
- the path where the files to analyse are located
- the minimum and the maximum n of times the pattern is found.

I know how to handle the arguments, but I don't know how to do the "core" of the script, the part of script where I write the command using grep (or other command) in pipeline with all other command are needed.

The most difficult part of the script is that one in Bold.

what I have written is:
Code:
egrep  -l '{$min,$max}  $pattern_to_find' $name_of_file

but it does't work

PS: I don't speeck english very well, so please be patient.

Last edited by DNAx86; 02-21-2008 at 04:37 PM..
# 5  
Old 02-21-2008
Tools Sample program and files used

datafiles used:

Code:
> cat sctfile1.dat
lalalala good file
lalblala good file
lalalalb good file
lalalbla good file

> cat sctfile2.dat
lblblblb good file
lblblclb good file
lblclblb good file
lblclblb good file
lblclblb good file
lblclblb good file
lclblblb bad file

> cat sctfile3.dat
lblblblb good file
lblblclb good file
lblclblb good file
lblclblb good file
lblclblb good file
lblclblb good file
lblclblb good file
lblclblb good file
lblclblb good file
lclblblb bad file
lblblclb good file
lblblclb good file
lblblclb good file
lblblclb good file

script program is

Code:
#! /bin/bash
pattern="good"
rm sctfile.raw 2>/dev/null
for zf in *.dat; do
   numpat=$(cat $zf | grep "$pattern" | wc -l)
   echo $numpat","$zf >>sctfile.raw
done
sort -nr sctfile.raw >sctfile.srt

and the output from the sorted file is

Code:
13,sctfile3.dat
6,sctfile2.dat
4,sctfile1.dat


from here, you could use the head or tail function to find maximum or minimum of the file sctfile.srt
# 6  
Old 02-21-2008
Quote:
Originally Posted by joeyg
datafiles used:

Code:
> cat sctfile1.dat
lalalala good file
lalblala good file
lalalalb good file
lalalbla good file

> cat sctfile2.dat
lblblblb good file
lblblclb good file
lblclblb good file
lblclblb good file
lblclblb good file
lblclblb good file
lclblblb bad file

> cat sctfile3.dat
lblblblb good file
lblblclb good file
lblclblb good file
lblclblb good file
lblclblb good file
lblclblb good file
lblclblb good file
lblclblb good file
lblclblb good file
lclblblb bad file
lblblclb good file
lblblclb good file
lblblclb good file
lblblclb good file

script program is

Code:
#! /bin/bash
pattern="good"
rm sctfile.raw 2>/dev/null
for zf in *.dat; do
   numpat=$(cat $zf | grep "$pattern" | wc -l)
   echo $numpat","$zf >>sctfile.raw
done
sort -nr sctfile.raw >sctfile.srt

and the output from the sorted file is

Code:
13,sctfile3.dat
6,sctfile2.dat
4,sctfile1.dat


from here, you could use the head or tail function to find maximum or minimum of the file sctfile.srt
Thank you, I tryed your code and it works on my script, but I realized that if the pattern is present more times in the same line it's counted 1 only time, there a way of improving that script?
# 7  
Old 02-21-2008
Hammer & Screwdriver what about doing a sed to insert 'new line' after each found?

I am not sure if I have the sed command correct, but I think you get the idea. I * the changes. Because the file will now only have one keyword on a line, the wc -l command would give a truer count.

Good luck! Smilie


#! /bin/bash
pattern="good"
rm sctfile.raw 2>/dev/null
for zf in *.dat; do

* sed 's/$pattern/$pattern \n/g' $zf >tempf
# numpat=$(cat $zf | grep "$pattern" | wc -l)

* numpat=$(cat tempf | grep "$pattern" | wc -l)


echo $numpat","$zf >>sctfile.raw
done
sort -nr sctfile.raw >sctfile.srt
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/awk using a begin search pattern and end search pattern

I have this fileA TEST FILE ABC this file contains ABC; TEST FILE DGHT this file contains DGHT; TEST FILE 123 this file contains ABC, this file contains DEF, this file contains XYZ, this file contains KLM ; I want to have a fileZ that has only (begin search pattern for will be... (2 Replies)
Discussion started by: vbabz
2 Replies

2. Shell Programming and Scripting

Search pattern on logfile and search for day/dates and skip duplicate lines if any

Hi, I've written a script to search for an Oracle ORA- error on a log file, print that line and the .trc file associated with it as well as the dateline of when I assumed the error occured. In most it is the first dateline previous to the error. Unfortunately, this is not a fool proof script.... (2 Replies)
Discussion started by: newbie_01
2 Replies

3. Shell Programming and Scripting

How to use sed to search a particular pattern in a file backward after a pattern is matched.?

Hi, I have two files file1.txt and file2.txt. Please see the attachments. In file2.txt (which actually is a diff output between two versions of file1.txt.), I extract the pattern corresponding to 1172c1172. Now ,In file1.txt I have to search for this pattern 1172c1172 and if found, I have to... (9 Replies)
Discussion started by: saurabh kumar
9 Replies

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

5. Shell Programming and Scripting

Need one liner to search pattern and print everything expect 6 lines from where pattern match made

i need to search for a pattern from a big file and print everything expect the next 6 lines from where the pattern match was made. (8 Replies)
Discussion started by: chidori
8 Replies

6. Shell Programming and Scripting

Print a pattern between the xml tags based on a search pattern

Hi all, I am trying to extract the values ( text between the xml tags) based on the Order Number. here is the sample input <?xml version="1.0" encoding="UTF-8"?> <NJCustomer> <Header> <MessageIdentifier>Y504173382</MessageIdentifier> ... (13 Replies)
Discussion started by: oky
13 Replies

7. Shell Programming and Scripting

search a pattern and if pattern found insert new pattern at the begining

I am trying to do some thing like this .. In a file , if pattern found insert new pattern at the begining of the line containing the pattern. example: in a file I have this. gtrow0unit1/gctunit_crrownorth_stage5_outnet_feedthru_pin if i find feedthru_pin want to insert !! at the... (7 Replies)
Discussion started by: pitagi
7 Replies

8. UNIX for Dummies Questions & Answers

modify a particular pattern starting from second line of the search pattern

Hi, I think you ppl did not get my question correctly, let me explain I have 1.txt with following entries as shown: 0152364|134444|10.20.30.40|015236433 0233654|122555|10.20.30.50|023365433 ** ** ** In file 2.txt I have the following entries as shown: ... (1 Reply)
Discussion started by: imas
1 Replies

9. UNIX for Dummies Questions & Answers

modify a particular pattern starting from second line of the search pattern

Hi, I am new to this forum and i would like to get help in this issue. I have a file 1.txt as shown: apple banana orange apple grapes banana orange grapes orange .... Now i would like to search for pattern say apple or orange and then put a # at the beginning of the pattern... (2 Replies)
Discussion started by: imas
2 Replies

10. Shell Programming and Scripting

Search file for pattern and grab some lines before pattern

I want to search a file for a string and then if the string is found I need the line that the string is on - but also the previous two lines from the file (that the pattern will not be found in) This is on solaris Can you help? (2 Replies)
Discussion started by: frustrated1
2 Replies
Login or Register to Ask a Question

Featured Tech Videos