Pattern Matching


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Pattern Matching
# 1  
Old 12-22-2010
Pattern Matching

Hi,

There is requirement wherein I want to search particular file names in a folder.
Now its not quite straight forward. Below are the examples:

sh123.1
sh12345.1
sh1234.1
sh1234.2
sh123.2
sh12345.2
sh1234.3
sh1234.4
.....
sh12134.12
.....so on

Now below are the requirements:
1.) Search above pattern files in a $file_dest folder ( like sh[1-4].[1-30] something like this..not sure though) and put in a temp.txt file
2.) Now again if any of above same file name ( before dot) exists more than 15 time ( it means sh1234.1 to sh1234.15 or sh123.1 to sh123.15) in temp.txt
then if else loop. I think do while loop will come here to check for all possibilities for a file name.
For eg: firstly in temp.txt search sh12.1 then sh12.2 then sh12.3 ..... if like this sh12.14 exist then do nothing....then search for sh123.1 then sh123.2 then sh123.3 ...if like this sh123.15 exist then do take sh123 (which is a process name and kill sh123 process). Likewise check for sh1234.1 till sh1234.15 if 15 files exist with same process sh1234 then kill it else do nothing.

Hope you guys didnt get confused...
# 2  
Old 12-22-2010
Code:
cd destFold                     # reach to destination folder
ls sh*.* | sed 's/\..*//g' | sort -u | while read line                  # list files which are in sh*.* format | remove everything after . with sed(i.e. sh123.12 will become sh123) | sort them uniquely | one by one read filenames(i.e. sh123, sh1234, sh12, etc..) 
do
    cnt=`ls ${line}.* | wc -l`                # take count of files in destFold directory
    if [ $cnt -ge 15 ] ; then                   # if count is greater then 15
        pid=`echo "$line" | sed -n 's/sh//g'`                   # extract pid from line by removing sh(i.e. sh123 will be 123, sh1234 will be 1234)
        kill -9 $pid                               # kill that pid as requested
    else
         echo ""                              # else do nothing
    fi
done

This is only for 1 time. If u want this to be monitored then run while loop again in loop.

Last edited by R0H0N; 12-22-2010 at 07:34 AM..
R0H0N
# 3  
Old 12-22-2010
Thanks But:

process id to kill the process I need to take from file name.

if sh1234.1 is a file name then process id is 1234
if sh123.2 is a file name then process id is 123

How can i pass this to kill <process id parameter>

and ALSO I want to run this to check for all available files...not 1 time.
For eg for sh123.* and then for sh1234.* till the end of while.
# 4  
Old 12-22-2010
Edited post#2
R0H0N
# 5  
Old 12-22-2010
Update Post #3

---------- Post updated at 06:27 AM ---------- Previous update was at 06:26 AM ----------

Also please let me know what backslah '\' is doing here in sed?

sed 's/\..*//g'

thanks Smilie
# 6  
Old 12-22-2010
find the whole explanation in post #2
R0H0N
# 7  
Old 12-22-2010
Thanks Rohan.
But as you hae mentioned in your post 2 that
"This is only for 1 time. If u want this to be monitored then run while loop again in loop."

I would like to run it again and again for all possibilities...
Can you please help me out for that as well....i dont want to run it once...but like a loop again and again for all posibilities...eg: check for sh123 then for sh1234 then for sh12345 etc.

Thanks Rohan Smilie
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Big pattern file matching within another pattern file in awk or shell

Hi I need to do a patten match between files . I am new to shell scripting and have come up with this so far. It take 50 seconds to process files of 2mb size . I need to tune this code as file size will be around 50mb and need to save time. Main issue is that I need to search the pattern from... (2 Replies)
Discussion started by: nitin_daharwal
2 Replies

2. UNIX for Dummies Questions & Answers

Grep -v lines starting with pattern 1 and not matching pattern 2

Hi all! Thanks for taking the time to view this! I want to grep out all lines of a file that starts with pattern 1 but also does not match with the second pattern. Example: Drink a soda Eat a banana Eat multiple bananas Drink an apple juice Eat an apple Eat multiple apples I... (8 Replies)
Discussion started by: demmel
8 Replies

3. Shell Programming and Scripting

PHP - Regex for matching string containing pattern but without pattern itself

The sample file: dept1: user1,user2,user3 dept2: user4,user5,user6 dept3: user7,user8,user9 I want to match by '/^dept2.*/' but don't want to have substring 'dept2:' in output. How to compose such regex? (8 Replies)
Discussion started by: urello
8 Replies

4. Shell Programming and Scripting

Sed: printing lines AFTER pattern matching EXCLUDING the line containing the pattern

'Hi I'm using the following code to extract the lines(and redirect them to a txt file) after the pattern match. But the output is inclusive of the line with pattern match. Which option is to be used to exclude the line containing the pattern? sed -n '/Conn.*User/,$p' > consumers.txt (11 Replies)
Discussion started by: essem
11 Replies

5. UNIX for Dummies Questions & Answers

Find pattern suffix matching pattern

Hi, I am trying to get a result out of this but fails please help. Have two files /tmp/1 & /tmp/hosts. /tmp/1 IP=123.456.789.01 WAS_HOSTNAME=abcdefgh.was.tb.dsdc /tmp/hosts 123.456.789.01 I want this result in /tmp/hosts if hostname is already there dont want duplicate entry. ... (5 Replies)
Discussion started by: rajeshwebspere
5 Replies

6. Shell Programming and Scripting

sed - matching pattern one but not pattern two

All, I have the following file: -------------------------------------- # # /etc/pam.d/common-password - password-related modules common to all services # # This file is included from other service-specific PAM config files, # and should contain a list of modules that define the services... (2 Replies)
Discussion started by: RobertBerrie
2 Replies

7. Shell Programming and Scripting

counting the lines matching a pattern, in between two pattern, and generate a tab

Hi all, I'm looking for some help. I have a file (very long) that is organized like below: >Cluster 0 0 283nt, >01_FRYJ6ZM12HMXZS... at +/99% 1 279nt, >01_FRYJ6ZM12HN12A... at +/99% 2 281nt, >01_FRYJ6ZM12HM4TS... at +/99% 3 283nt, >01_FRYJ6ZM12HM946... at +/99% 4 279nt,... (4 Replies)
Discussion started by: d.chauliac
4 Replies

8. Shell Programming and Scripting

Pattern Matching

Hi Folks, I have the following requirement: I have a file that is containing numerous queries. The tables name mentioned in the queries are in the following format : SchemaName.Tablename. e.g COPDB.TableName. I need to take out all the COPDB.TableName pattern and write it to a different... (6 Replies)
Discussion started by: Siv_Pat
6 Replies

9. UNIX for Dummies Questions & Answers

Pattern Matching

Hi Folks, I have the following requirement: I have a file that is containing numerous queries. The tables name mentioned in the queries are in the following format : SchemaName.Tablename. e.g COPDB.TableName. I need to take out all the COPDB.TableName pattern and write it to a different... (0 Replies)
Discussion started by: Siv_Pat
0 Replies

10. Shell Programming and Scripting

comment/delete a particular pattern starting from second line of the matching pattern

Hi, I have file 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: 0152364|134444|10.20.30.40|015236433 0233654|122555|10.20.30.50|023365433... (4 Replies)
Discussion started by: imas
4 Replies
Login or Register to Ask a Question