Perl - How to search a text file with multiple patterns?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Perl - How to search a text file with multiple patterns?
# 1  
Old 03-25-2009
Perl - How to search a text file with multiple patterns?

Good day, great gurus,

I'm new to Perl, and programming in general. I'm trying to retrieve a column of data from my text file which spans a non-specific number of lines. So I did a regexp that will pick out the columns. However,my pattern would vary. I tried using a foreach loop unsuccessfully. How would I thus go about creating a script in perl that would:
1) Run a list of patterns (names in this case)
2) A pattern search of each in a file

The code I managed so far is this :

Code:
!/usr/bin/perl
use warnings;
use strict;



my @identity = qw/Joseph Clark May/;


my $data_file = 'C:\tests\Profiles.txt';
open (DAT, $data_file);

foreach $name(@identity) {
    while (<DAT>) {
        print if (/$name/ .. /\/\//);
    }
}

    

close (DAT);



So a data file like this:
NAME Joseph
blah
blah
blah
//
NAME Kent
blah
blah
blah
blah
//
NAME Clark
blah
blah
//
...


would give me this (after running the script):
Code:
NAME Joseph
blah
blah
blah
//
NAME Clark
 blah
 blah
 blah
blah
 //
NAME May
blah
blah
blah
//

above is just an example, but the file is huge, and so I just need to filter out these data. Any ideas much appreciated Smilie

Oh, and I only get one result, which is Joseph's data....

Last edited by Yogesh Sawant; 03-25-2009 at 06:45 AM.. Reason: added code tags
# 2  
Old 03-25-2009
Code:
!/usr/bin/perl
use warnings;
use strict;

use strict;
use warnings;

my $identity = 'Joseph|Clark|May';
my $data_file = 'C:/tests/Profiles.txt';
open (DAT, $data_file) or die "$!";
OUTTER: while (<DAT>) {
   if (/^NAME $identity$/) {
      print; 
      while(<DAT>) {
         print;
         next OUTTER if (m|//|);
      } 
   }
}

close (DAT);

# 3  
Old 03-26-2009
Thanx a million, KevinADC! That did it for me Smilie
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Search Multiple patterns and display

Hi, I have scenario like below and need to search for multiple patterns Eg: Test Time Started= secs Time Ended = secc Green test Test Time Started= secs Time Ended = secc Green test Output: I need to display the text starting with Test and starting with Time... (2 Replies)
Discussion started by: weknowd
2 Replies

2. Shell Programming and Scripting

Search patterns in multiple logs parallelly.

Hi All, I am starting a service which will redirect its out put into 2 logs say A and B. Now for succesful startup of the service i need to search pattern1 in log A and pattern2 in log B which are writen continuosly. Now my requirement is to find the patterns in the increasing logs A and B... (19 Replies)
Discussion started by: Girish19
19 Replies

3. Shell Programming and Scripting

How to search multiple patterns and remove lines from a file?

Hi, I have a file content as below. Table : PAYR Displayed fields: 15 of 15 Fixed columns: 4 List width 0999... (4 Replies)
Discussion started by: shirdi
4 Replies

4. Shell Programming and Scripting

Search and swap multiple lines in file using Perl

Hi all, I have a vcd file with a bunch of lines containing an array, like this $var wire 1 b a $end $var wire 1 c a $end $var wire 1 d a $end $var wire 1 e a $end $var wire 1 f b $end $var wire 1 g b $end $var wire 1 h b $end $var wire 1 i b $end I want it like this: $var wire 1 e a... (12 Replies)
Discussion started by: veerabahu
12 Replies

5. Shell Programming and Scripting

How to search Multiple patterns in unix

Hi, I tried to search multiple pattern using awk trans=1234 reason=LN MISMATCH rec=`awk '/$trans/ && /'"$reason"'/' file` whenevr i tried to run on command promt it is executing but when i tried to implment same logic in shell script,it is failing i.e $rec is empty ... (6 Replies)
Discussion started by: ns64110
6 Replies

6. Shell Programming and Scripting

search multiple patterns

I have two lists in a file that look like a b b a e f c d f e d c I would like a final list a b c d e f I've tried multiple grep and awk but can't get it to work (8 Replies)
Discussion started by: godzilla07
8 Replies

7. Shell Programming and Scripting

Search multiple patterns in multiple files

Hi, I have to write one script that has to search a list of numbers in certain zipped files. For eg. one file file1.txt contains the numbers. File1.txt contains 5,00,000 numbers and I have to search each number in zipped files(The number of zipped files are around 1000 each file is 5 MB) I have... (10 Replies)
Discussion started by: vsachan
10 Replies

8. UNIX for Advanced & Expert Users

Best way to search for patterns in huge text files

I have the following situation: a text file with 50000 string patterns: abc2344536 gvk6575556 klo6575556 .... and 3 text files each with more than 1 million lines: ... 000000 abc2344536 46575 0000 000000 abc2344536 46575 4444 000000 abc2344555 46575 1234 ... I... (8 Replies)
Discussion started by: andy2000
8 Replies

9. Shell Programming and Scripting

Perl: Match a line with multiple search patterns

Hi I'm not very good with the serach patterns and I'd need a sample how to find a line that has multiple patterns. Say I want to find a line that has "abd", "123" and "QWERTY" and there can be any characters or numbers between the serach patterns, I have a file that has thousands of lines and... (10 Replies)
Discussion started by: Juha
10 Replies

10. UNIX for Dummies Questions & Answers

How to parameterize multiple search patterns and generate a new file

I have one file: 123*100*abcd*10 123*101*abcd*-29*def 123*100*abcd*-10 123*102*abcd*-105*asd I would like to parameterize the search patterns in the following way so that the user could dynamically change the search pattern. *100* and *- (ie *minus) *102* and *- The output that is... (6 Replies)
Discussion started by: augustinep
6 Replies
Login or Register to Ask a Question