Passing variable and wild card character to grep in Perl


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Passing variable and wild card character to grep in Perl
# 1  
Old 08-31-2010
Passing variable and wild card character to grep in Perl

HI All,
I have a script that needs to find out a list of files in a directory, i pass the search parameter as an argument.
Code:
opendir ( DIR, $dir ) || die "Error in opening dir $dirname\n";
@filename1 = (grep {/$File_pattern/ } readdir(DIR));

The problem is my file patterns are like MQS_MT300_XXXXX_YYYYMMDD_*
the third word in the file varies everyday so i need use regex .
Code:
1. perl 2.pl MQS_MT535_[A-Za-z0-9]_20100831_

2.perl 2.pl MQS_MT535_[A-Za-z0-9]_20100831_

Above are the ways i call my script from the prompt, i have tried them and many other options , they do not work and my code is unable to find the files

is there a way i can crack this off, Apreciate your help
# 2  
Old 08-31-2010
Are you looking for something like this ?

Code:
$
$
$ # list the files in current directory
$ ls -1
MQS_MT535_A1b2X_20100831_blah
MQS_MT535_PQ9rs_20100831_blah
MQS_MT535_XY#9t_20100831_blah
openfiles.pl
$
$
$ # show the contents of the Perl script
$ cat -n openfiles.pl
     1  #perl -w
     2  $some_dir = ".";
     3  $pattern = $ARGV[0];
     4  opendir (my $dh, $some_dir) || die "Can't opendir $some_dir: $!";
     5  @files = grep {/$pattern/x} readdir($dh);
     6  print $_,"\n" for (@files);
     7  closedir ($dh) || die "Can't closedir $some_dir: $!";
$
$
$ # run the Perl script passing a pattern to it
$
$ perl openfiles.pl "MQS_MT535_[A-Za-z0-9]{5}_20100831_"
MQS_MT535_A1b2X_20100831_blah
MQS_MT535_PQ9rs_20100831_blah
$
$
$ # run the Perl script again, passing yet another pattern so that all "MQS" files are selected
$
$ perl openfiles.pl "MQS_MT535_[A-Za-z0-9#]{5}_20100831_"
MQS_MT535_A1b2X_20100831_blah
MQS_MT535_PQ9rs_20100831_blah
MQS_MT535_XY#9t_20100831_blah
$
$
$ # or a very general pattern
$
$ perl openfiles.pl "MQS_MT535"
MQS_MT535_A1b2X_20100831_blah
MQS_MT535_PQ9rs_20100831_blah
MQS_MT535_XY#9t_20100831_blah
$
$

tyler_durden

Last edited by durden_tyler; 08-31-2010 at 03:20 PM..
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Wild card for dir path

I have dir structure like this : /opt/oracle/product/abc/sqlplus/admin/ /opt/oracle/product/def/sqlplus/admin /opt/oracle/product/ghi/sqlplus/admin I am trying to use wildcard ( for dirs abc,def,ghi) ..something like this : cp xyz.txt ... (1 Reply)
Discussion started by: talashil
1 Replies

2. Shell Programming and Scripting

find with wild card [solved]

Can somebody help me with the following syntax? I want to find all files that end with *.arc SUFFIX=".arc" find /tmp -name "\*$SUFFIX" -print 2>/dev/null ---------- Post updated at 03:45 PM ---------- Previous update was at 03:41 PM ---------- got it thanks -name... (0 Replies)
Discussion started by: BeefStu
0 Replies

3. Shell Programming and Scripting

Grep using wild card issue

Hi, I am having a file (file1) having following contents " xet B - All Divers/All Rivers - - ns - " Now when i use cat file1 | grep 'RF' it doesn't returns anything. But on using cat file1 | grep 'RF*' shows me... (6 Replies)
Discussion started by: sarbjit
6 Replies

4. Shell Programming and Scripting

wild card in if condition not working

Hi, I am using RHEL5. I have following if condition. if In the above condition, if the value of a contains word WARNING, it should match. i.e., WARNING_MESSAGE, CRITICAL WARNING, WARNING ALERT etc. it should match. For b, alert error, ALERT ERROR, ERROR IMMEDIATE ACTION REQUIRED, etc... (2 Replies)
Discussion started by: user7509
2 Replies

5. Shell Programming and Scripting

How to use wild card character in string concatenation--please help

Hi All, I'm new to shell scripting. Please help me in achieving this I am trying to a find regular expression that need to pick a file with begin with the below format and this code is called in xml file. currently the script accepts:... (0 Replies)
Discussion started by: vasavi_cherku
0 Replies

6. AIX

df, grep, wild card

Hi, I want to monitor my filesystem capacity and I want to df with grep wildcard for all 9*%. Is this possible? I want to replaced all the existing complicated scripts I have in the system. Thanks, Itik (2 Replies)
Discussion started by: itik
2 Replies

7. Shell Programming and Scripting

Wild card in find perm

Hi, Is there a way to use find command to list the directories for certain permissions. I know we can use find . -type d -perm nnn, where nnn is the permission number . However I wold like to know if I wanna search for wild card permissions i.e 75* / 7* / 55* , as i do not know the actual... (1 Reply)
Discussion started by: braindrain
1 Replies

8. UNIX for Dummies Questions & Answers

How do I pass a wild card as an argument

Hi, I would like to pass a wild card as part of an argument. But when I do it the script views the wild card as text. Example: sFile=MG1A* sort $sFile > $sFile.sorted What I get is MG1A*.sorted The problem is I am passed a series of files where the first few characters like "MG1A"... (2 Replies)
Discussion started by: eja
2 Replies

9. UNIX for Dummies Questions & Answers

ls and wild card - Should be simple!

I am trying to cp files that have F0 as prefix in their name in path p1/p2 to path p3/p4 this command does not work - Why? (I am using HP/UX) cp p1/p2/F0* p3/p4 thanks. (2 Replies)
Discussion started by: GNMIKE
2 Replies

10. UNIX for Dummies Questions & Answers

using if with wild card patterns

Hi, Please help me. Suppose I have a file which contains files like: My file :/tmp/rooh_20020518.lst it consists: ASI00320225041925URD01 ASI00320225041925KER02 ASI00390228095244KER08 ... (1 Reply)
Discussion started by: rooh
1 Replies
Login or Register to Ask a Question