[boulder.pm] FW: text extract

Justin Crawford Justin.Crawford at cusys.edu
Wed Jul 25 18:02:38 CDT 2001


Thanks Chip.  My first example was misleading.  It's more like:

-
haystack
haystack
haystack
;

-
haystack
haystack
NEEDLE!
haystack
;

Still, I can see how that first solution could do it; I'll make that one go.
I was thinking there must be some way to do it using the range operators
(...) in combination with another pattern match, or using undef $/, but I
can't figure that way out if it exists.  Probably I'm trying too hard to be
superelite and not trying hard enough to get the thing writ...

Justin

-----Original Message-----
From: Chip Atkinson [mailto:chip at rmpg.org]
Sent: Wednesday, July 25, 2001 3:50 PM
To: 'boulder-pm-list at happyfunball.pm.org'
Subject: Re: [boulder.pm] FW: text extract


While perhaps not the best way, here's a way at least

$start_looking = 0;

while (<>)
{
   if (/2a/)
   {
     $start_looking = 1;
     next;
   }

   if ($start_looking && /NEEDLE/)
   {
     print ("Found it\n");
     exit;
   }
}

Another possibility is to read in the entire file in slurp mode and look
for a pattern like /2a.*NEEDLE.*/.

Chip

On Wed, 25 Jul 2001, Justin Crawford wrote:

> Whoa, got ahead of myself there...
> 
> I'm trying to extract multiple lines of data from a text file, only if one
> of the lines contains a string.  Picture a file like so:
> 
> 1a
> haystack
> haystack
> haystack
> haystack
> 1b
> 
> 2a
> haystack
> haystack
> NEEDLE!!!
> haystack
> 2b
> 
> I want to cruise the text file getting every chunk that's like the one
from
> 2a to 2b.
> 
> What's the best way?
> 
> Thanks!
> 
> Justin Crawford
> Oracle DBA Team
> University of Colorado Management Systems
> 303-492-9083
> 



More information about the Boulder-pm mailing list