Beefy Boxes and Bandwidth Generously Provided by pair Networks
go ahead... be a heretic
 
PerlMonks  

Re: grep question using multiple lines

by n3toy (Hermit)
on Dec 28, 2008 at 03:30 UTC ( [id://732864]=note: print w/replies, xml ) Need Help??


in reply to grep question using multiple lines

You might be able to do it in one line.

I am not sure what the criteria for finding the data is exactly. The example shows an email address, but you say the search text could be anything. Assuming per the example you are looking for the text following "constant=" up to the first space and there is only one instance per line, this worked for me:

perl -nle 'while(m/constant=(.*)\s/g){print "$1"}' /home/jamie/example +.txt
I tend to oversimplify things, so it may not be what you are looking for. But it is one line and it returns the data you were looking for.

Jamie

Replies are listed 'Best First'.
Re^2: grep question using multiple lines
by backstab (Novice) on Dec 28, 2008 at 03:58 UTC

    Use the modifier notation might be of great style as well,

    perl -nle 'print $1 while /constant=(.*)\s/g' /home/jamie/txt

    But I remark the association of -l and \s vs. a more explicite regexp does not behave well in case of many matches on the same line!

    Try it for example with a txt file as follow,

    xxxxxxxxx constant=foo@bar.com xxxxxxxxxxx xxxxxx constant=baz@huux.org xxxxxxx contant=hello@world.bye xxxxxxxxx xxxxxxxxxxxxxxxxxxx

    will print,

    foo@bar.com baz@huux.org xxxxxxx contant=hello@world.bye

    I think the problem comes from (.*) that is greedy and matches even spaces at the condition there is at least one space remaining to satisfie \s. But I try (.*?) and the /g flag does not seem ok?

      Indeed your match is greedy. Still we can change it as follows:

      $ perl -nle 'print $1 while /constant=(^ +)\s/g' < test.txt
      barney@gmail.com
      wilma@aol.com
      
      Steve
      --

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://732864]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (5)
As of 2024-04-20 01:05 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found