Sponsored Content
Top Forums UNIX for Dummies Questions & Answers PERL pattern matching in a file Post 302523744 by Skrynesaver on Thursday 19th of May 2011 03:58:57 PM
Old 05-19-2011
OK, with that in mind try the following
Code:
#!/usr/bin/perl

use strict;
use warnings;

open (my $in , '<', 'input.txt')|| die "Couldn't open input.txt\n\t$!";
open (my $yes, '>', 'accepted.txt')|| die "Couldn't open accepted.txt\n\t$!";
open (my $no , '>', 'rejected.txt')|| die "Couldn't open rejected.txt\n\t$!";
my @regexen=(qr'(^[0-9a-zA-Z]+$)',qr'(^[0-9]+$)',qr'(^[MF]$)');
while(<$in>){
        my $valid=1;
        my @fields = split(/\|/, $_);
        for (0..$#fields){
                if ($fields[$_]=~$regexen[$_]){
                        $fields[$_]=$1;
                }
                else {
                        $fields[$_]="";
                        $valid=0;
                }
        }
        print $yes join('|', @fields),"\n";
        if (! $valid){
                print $no $_;
        }
}
close($yes);
close($no);
close($in);
print "The valid fields in each record from input.txt are in the file accepted.txt and the invalid are in rejects.txt\n";
exit;


Last edited by Skrynesaver; 05-20-2011 at 02:22 AM.. Reason: Re-wrote using quoted regex array
 

10 More Discussions You Might Find Interesting

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

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

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

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

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

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

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

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

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

10. Shell Programming and Scripting

Perl - Use of *? in Matching Pattern

I am using Perl version 5.8.4 and trying to understand the use of regular expression. Following is my code and output. $string = "Perl is a\nScripting language"; ($start) = ($string =~ /\A(.*?) /); @lines = ($string =~ /^(.*?) /gm); print "First Word (using \\A): $start\n","Line... (4 Replies)
Discussion started by: jnrohit2k
4 Replies
MAXDB_NUM_FIELDS(3)							 1						       MAXDB_NUM_FIELDS(3)

maxdb_num_fields - Get the number of fields in a result

       Procedural style

SYNOPSIS
int maxdb_num_fields (resource $result) DESCRIPTION
Object oriented style int$maxdb_result->field_count () maxdb_num_fields(3) returns the number of fields from specified result set. RETURN VALUES
The number of fields from a result set EXAMPLES
Example #1 Object oriented style <?php $maxdb = new maxdb("localhost", "MONA", "RED", "DEMODB"); /* check connection */ if (maxdb_connect_errno()) { printf("Connect failed: %s ", maxdb_connect_error()); exit(); } if ($result = $maxdb->query("SELECT * FROM hotel.city ORDER BY zip")) { /* determine number of fields in result set */ $field_cnt = $result->field_count; printf("Result set has %d fields. ", $field_cnt); /* close result set */ $result->close(); } /* close connection */ $maxdb->close(); ?> Example #2 Procedural style <?php $link = maxdb_connect("localhost", "MONA", "RED", "DEMODB"); /* check connection */ if (maxdb_connect_errno()) { printf("Connect failed: %s ", maxdb_connect_error()); exit(); } if ($result = maxdb_query($link, "SELECT * FROM hotel.city ORDER BY zip")) { /* determine number of fields in result set */ $field_cnt = maxdb_num_fields($result); printf("Result set has %d fields. ", $field_cnt); /* close result set */ maxdb_free_result($result); } /* close connection */ maxdb_close($link); ?> The above example will output something similar to: Result set has 3 fields. SEE ALSO
maxdb_fetch_field(3). PHP Documentation Group MAXDB_NUM_FIELDS(3)
All times are GMT -4. The time now is 01:03 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy