Sponsored Content
Top Forums Shell Programming and Scripting Perl script: matching multiple lines error Post 302844627 by askari on Monday 19th of August 2013 01:53:53 PM
Old 08-19-2013
Hi durden_tyler,

Thanks for your code. I found the bug was the place of array variable initialization. After I put the "@result" array variable to the next line " if (open (EXT, ">${line}.log")) {",
The program already produced my desired output. Anyway thanks a lot for your code sharing.

Here is the complete code of mine.

Code:
#!/usr/bin/perl -w
use strict;


my $flag = 0;
my @data = qw /Gabriel Andreas/;

while (my $line = shift @data)
{
  if (open (EXT, ">${line}.log"))
  {
   my @result;
   
  if (open (FILE, "<data_test.log"))
  {
  
  while (<FILE>) 
    {
      
      if (/Pattern\s+($line)/i) 
      {
       $flag = 1;
      } 
      elsif( /^end/ ) 
      {
       $flag = 0;
      }
      if ($flag) 
      {
        push @result, $_;
      }
    }

  }
  print EXT "$_" for (@result);
  }
}  
close (EXT);
close (FILE)

__DATA__
Pattern Gabriel
halo1
halo2
end
Pattern Andreas
halo1
halo2
end


Last edited by askari; 08-19-2013 at 03:05 PM..
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

[Help] PERL Script - grep multiple lines

Hi Gurus, I need some help with the "grep" command or whatever command that you think suitable for me. I'm about to write a perl script to extract a report from the system and submit it to the end users. The input for the script will consist of 3 element. 1) Generation ID 2) Month 3) Year... (6 Replies)
Discussion started by: miskin
6 Replies

2. Shell Programming and Scripting

pattern matching over multiple lines and deleting the first

I've got a longish log file with content such as Uplink traffic: Downlink traffic: I want to parse the log file and remove any line that contains the string "Uplink traffic:" at the beginning of the line, but only if the line following it beginnings with the string "Downlink traffic:" (in... (7 Replies)
Discussion started by: Yorkie99
7 Replies

3. Shell Programming and Scripting

Matching lines across multiple csv files and merging a particular field

I have about 20 CSV's that all look like this: "","","","","","","","","","","","","","","",""What I've been told I need to produce is the exact same thing, but with each file now containing the start_code from every other file where the email matches. It doesn't matter if any of the other... (1 Reply)
Discussion started by: Demosthenes
1 Replies

4. Shell Programming and Scripting

perl basic multiple pattern matching

Hi everyone, and thank you for your help with this. I am VERY new with perl so all of your help is appreciated. I have tried google but as I don't know the proper terms to search for and could be daunting for a newbie scripter... I know this is very easy for most of you! Thanks! I have a... (4 Replies)
Discussion started by: sinusoid
4 Replies

5. Shell Programming and Scripting

Perl XML, find matching condition and grep lines and put the lines somewhere else

Hi, my xml files looks something like this <Instance Name="New York"> <Description></Description> <Instance Name="A"> <Description></Description> <PropertyValue Key="false" Name="Building A" /> </Instance> <Instance Name="B"> ... (4 Replies)
Discussion started by: tententen
4 Replies

6. Shell Programming and Scripting

Perl Regex matching multiple lines

I need a way to extract data from X 4T Solution 21 OCT 2011 37 .00 to account 12345678 User1 user2 X 4T Solution Solution Unlimited 11 Sep 2009 248 .00 to account 87654321 user3 user4 I need it to extract 'X' '37.00' and account number 12345678. I have extracted above stuff... (3 Replies)
Discussion started by: chakrapani
3 Replies

7. Shell Programming and Scripting

Multiple pattern matching using awk and getting count of lines

Hi , I have a file which has multiple rows of data, i want to match the pattern for two columns and if both conditions satisfied i have to add the counter by 1 and finally print the count value. How to proceed... I tried in this way... awk -F, 'BEGIN {cnt = 0} {if $6 == "VLY278" &&... (6 Replies)
Discussion started by: aemunathan
6 Replies

8. Shell Programming and Scripting

Help need with PERL multiple search pattern matching!

My example file is as given below: conn=1 uid=oracle conn=2 uid=db2 conn=3 uid=oracle conn=4 uid=hash conn=5 uid=skher conn=6 uid=oracle conn=7 uid=mpalkar conn=8 uid=anarke conn=9 uid=oracle conn=1 op=-1 msgId=-1 - fd=104 slot=104 LDAPS connection from 10.10.5.6 to 10.18.6.5 conn=2... (3 Replies)
Discussion started by: sags007_99
3 Replies

9. Shell Programming and Scripting

Perl Matching multiple variables

I am trying to match mulitple (3) variables. I found the sub given below on the web which works well when all vars are defined. But there are situations where one or two will not be defined (at least one will always be defined.) Example of the variable content possibilities The sub found... (4 Replies)
Discussion started by: popeye
4 Replies

10. Shell Programming and Scripting

Group Multiple Lines on SINGLE line matching pattern

Hi Guys, I am trying to format my csv file. When I spool the file using sqlplus the single row output is wrapped on three lines. Somehow I managed to format that file and finally i am trying to make the multiple line on single line. The below command is working fine but I need to pass the... (3 Replies)
Discussion started by: RJSKR28
3 Replies
TAP::Parser::YAMLish::Writer(3pm)			 Perl Programmers Reference Guide			 TAP::Parser::YAMLish::Writer(3pm)

NAME
TAP::Parser::YAMLish::Writer - Write YAMLish data VERSION
Version 3.26 SYNOPSIS
use TAP::Parser::YAMLish::Writer; my $data = { one => 1, two => 2, three => [ 1, 2, 3 ], }; my $yw = TAP::Parser::YAMLish::Writer->new; # Write to an array... $yw->write( $data, @some_array ); # ...an open file handle... $yw->write( $data, $some_file_handle ); # ...a string ... $yw->write( $data, $some_string ); # ...or a closure $yw->write( $data, sub { my $line = shift; print "$line "; } ); DESCRIPTION
Encodes a scalar, hash reference or array reference as YAMLish. METHODS
Class Methods "new" my $writer = TAP::Parser::YAMLish::Writer->new; The constructor "new" creates and returns an empty "TAP::Parser::YAMLish::Writer" object. Instance Methods "write" $writer->write($obj, $output ); Encode a scalar, hash reference or array reference as YAML. my $writer = sub { my $line = shift; print SOMEFILE "$line "; }; my $data = { one => 1, two => 2, three => [ 1, 2, 3 ], }; my $yw = TAP::Parser::YAMLish::Writer->new; $yw->write( $data, $writer ); The $output argument may be: o a reference to a scalar to append YAML to o the handle of an open file o a reference to an array into which YAML will be pushed o a code reference If you supply a code reference the subroutine will be called once for each line of output with the line as its only argument. Passed lines will have no trailing newline. AUTHOR
Andy Armstrong, <andy@hexten.net> SEE ALSO
YAML::Tiny, YAML, YAML::Syck, Config::Tiny, CSS::Tiny, <http://use.perl.org/~Alias/journal/29427> COPYRIGHT
Copyright 2007-2011 Andy Armstrong. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. The full text of the license can be found in the LICENSE file included with this module. perl v5.18.2 2014-01-06 TAP::Parser::YAMLish::Writer(3pm)
All times are GMT -4. The time now is 02:01 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy