Pattern matching problem in PERL script


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Pattern matching problem in PERL script
# 8  
Old 10-15-2008
Thanks for your interest, below are some of the sample lines from one of the input file. I need to extract the string "Check the EMPLOYEE(...any info...) field". Hope this gives you some idea.

Error validating the following employee:
10/10/19 2015/09/17 0.9800000 0200000 3.000000
Check the EMPLOYEE(RiskOn(EMPID))(23434334432) field 287769.820000 2015/10/19,2015/10/19 2015/11/19 2015/10/15
Actual Cource : 9003417732_RENTOPT_14226129NA;MAINTRADE;RENTOPT;

Error validating the following Trade:
Check the EMPLOYEE(RiskOn(TRADE))(98309803484) field 287769.820000 2015/10/19,2015/10/19 2015/11/19 2015/10/15
Actual Cource : 4432417732_RENTOPT_93845043NA;MAINTRADE;RENTOPT;
15/11/19 2015/09/17 0.000000 0.000000 0.000000

Error validating the following employee:
Check the EMPLOYEE(Timeout(TIME))(43234334343) field 287769.820000 2015/10/19,2015/10/19 2015/11/19 2015/10/15
Actual Cource : 7303413452_RENTOPT_14226129NA;MAINTRADE;RENTOPT;
15/11/19 2015/09/17 0.000000 0.000000 0.000000
# 9  
Old 10-15-2008
Code:
while(<>){
   if (/^Check the EMPLOYEE(.+?) field/) {
	   print "$1\n";
	}
}

# 10  
Old 10-15-2008
Hi Kevin,

Still the code doesn't working, pls have a look at the complete code.
I've commented my original code.

#!/usr/bin/perl

use File::Find;
use strict;

my $directory = "/export/home/glk/FILES";
my $out_filename = "/export/home/glk/output_file.txt";

find (\&process, $directory);

sub process
{
# my @outLines; #Data we are going to output
my $line; #Data we are reading line by line

# Only parse files that end in .html
if ( $File::Find::name =~ /\ErrorTrades.info$/ ) {
open (FILE, $File::Find::name ) or die "Cannot open file: $!";
open( OUTFILE, "> " . $out_filename ) or die "Cannot open file: $!";

# while ( $line = <FILE> ) {
# if ($line =~ m/^Check the EMPLOYEE (.+?)/){
# push(@outLines, $line);
# }
# }


if (/^Check the EMPLOYEE(.+?) field/) {
print "$1\n";
}

# print ( OUTFILE @outLines );

close FILE;
close ( OUTFILE );
# undef ( @outLines );
}
}

I am crossing my fingers Smilie
# 11  
Old 10-15-2008
Basic test of conceept:

Code:
while(<DATA>){
   if (/^Check the EMPLOYEE(.+?) field/) {
	   print "$1\n";
	}
}

__DATA__
Error validating the following employee:
10/10/19 2015/09/17 0.9800000 0200000 3.000000
Check the EMPLOYEE(RiskOn(EMPID))(23434334432) field 287769.820000 2015/10/19,2015/10/19 2015/11/19 2015/10/15
Actual Cource : 9003417732_RENTOPT_14226129NA;MAINTRADE;RENTOPT;

Error validating the following Trade:
Check the EMPLOYEE(RiskOn(TRADE))(98309803484) field 287769.820000 2015/10/19,2015/10/19 2015/11/19 2015/10/15
Actual Cource : 4432417732_RENTOPT_93845043NA;MAINTRADE;RENTOPT;
15/11/19 2015/09/17 0.000000 0.000000 0.000000

Error validating the following employee:
Check the EMPLOYEE(Timeout(TIME))(43234334343) field 287769.820000 2015/10/19,2015/10/19 2015/11/19 2015/10/15
Actual Cource : 7303413452_RENTOPT_14226129NA;MAINTRADE;RENTOPT;
15/11/19 2015/09/17 0.000000 0.000000 0.000000
Reply With Quote

output:

(RiskOn(EMPID))(23434334432)
(RiskOn(TRADE))(98309803484)
(Timeout(TIME))(43234334343)

So are you getting no output or different output or???

Its obvious your code is not checking any data from a file. You open FILE but then you don't loop through it looking for your data.
# 12  
Old 10-15-2008
Try this:

Code:
#!/usr/bin/perl

use File::Find;
use strict;

my $directory = "/export/home/glk/FILES";
my $out_filename = "/export/home/glk/output_file.txt";
my @outLines = ();

find (\&wanted, $directory);

open( OUTFILE, ">", $out_filename ) or die "Cannot open file: $!";
print OUTFILE "$_\n" for @outLines;
close OUTFILE;

sub wanted {
   if ( $File::Find::name =~ /ErrorTrades\.info$/ ) {
      open (FILE, $File::Find::name ) or die "Cannot open file: $!";
         while ( my $line = <FILE> ) {
            if ($line =~ m/^Check the EMPLOYEE (.+?) field/){
               push(@outLines, $1);
         }
      }
      close FILE;
   }
}

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Pattern Matching in Perl script

I have a big perl script need to fix a small pattern matching inside .. I have patterns like create unique index create index The pattern matching should look for both the pattern in the same statement, The existing matching looks for only "create unique index" The exising code for this i... (6 Replies)
Discussion started by: greenworld123
6 Replies

2. Shell Programming and Scripting

Pattern matching in Perl

Hi, I have a list of IP, eg : 192.168.0.15 192.168.0.24 192.168.2.110 192.168.2.200 And I would like the shortest pattern who match with '192.168.0' and '192.168.2' (without the last dot and number). (7 Replies)
Discussion started by: X-Or
7 Replies

3. Shell Programming and Scripting

Need help with perl pattern matching

My log file looks as given below, its actually a huge file around 1 GB and these are some of the line: conn=5368758 op=10628050 msgId=64 - RESULT err=0 tag=101 nentries=1 etime=0 conn=7462122 op=-1 msgId=-1 - fd=247 slot=247 LDAPS connection from 10.13.18.12:37645 to 10.18.6.45 conn=7462122... (5 Replies)
Discussion started by: sags007_99
5 Replies

4. Shell Programming and Scripting

Pattern Matching in PERL

I have a 2 files in .gz format and it consists of 5 million lines the format of the file would be gzcat file1.gz | more abcde aerere ffgh56 .. .. 12345 gzcat file2.gz | more abcde , 12345 , 67890, ffgh56 , 45623 ,12334 whatever the string is in the file1 should be matched... (3 Replies)
Discussion started by: aravindj80
3 Replies

5. Shell Programming and Scripting

Perl Pattern matching...

I am doing a file patterhn matching for a text file in PERL I am using this,,, but it says that no file is found $filepattern = '\d{1,4}.*A0NW9693.NDM.HBIDT.*.AD34XADJ.txt'; Can anyone help me out with Perl Pattern Matching concepts and how to do pattern matching for this txt file:... (4 Replies)
Discussion started by: msrahman
4 Replies

6. Shell Programming and Scripting

Perl pattern matching!!

Hi experts, I have many occurances of the following headers in a file. I need to grep for the word changed/inserted in the header, calculate the difference between the two numbers and list the count incrementally. Headers in a file look like this: ------------------- ---------------------... (6 Replies)
Discussion started by: nmattam
6 Replies

7. Shell Programming and Scripting

Perl Pattern Matching

Hello experts, I have a file containing the following text(shortened here). File Begin ---------- < # Billboard.d3fc1302a677.imagePath=S:\\efcm_T4 < Billboard.d3fc1302a677.imagePath=S:\\efcm_T4 --- > # Billboard.d3fc1302a677.imagePath=S:\\efcm_Cassini >... (2 Replies)
Discussion started by: nmattam
2 Replies

8. Shell Programming and Scripting

Perl -Pattern Matching help..!

Hi, I got doubt in Pattern matching, could you tell me how the following differs in action ?? if ( $line1==/$line2/ ) if ( $line1=~/$line2/ ) if ( $line1=~m/$line2/) What is the significance of '~' in matching. Thanks in advance CoolBhai (5 Replies)
Discussion started by: coolbhai
5 Replies

9. Shell Programming and Scripting

Perl Pattern Matching !!! Help

Hello I got the below one from in one of this forums For Ex: Loading File System Networking in nature now i need to extract the patterns between the words File and Networking : i.e. sample output: System cmd used : cat <file> | sed 's/.*File //' | sed 's/Closing.*$//' Actually... (0 Replies)
Discussion started by: maxmave
0 Replies

10. Shell Programming and Scripting

perl pattern matching

hi i am trying to get digits inside brackes from file , whose structure is defined below CREATE TABLE TELM (SOC_NO CHAR (3) NOT NULL, TXN_AMOUNT NUMBER (17,3) SIGN_ON_TIME CHAR (8) TELLER_APP_LIMIT NUMBER (17,3) FIL01 ... (2 Replies)
Discussion started by: zedex
2 Replies
Login or Register to Ask a Question