Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much
 
PerlMonks  

Re^2: grep question using multiple lines

by backstab (Novice)
on Dec 28, 2008 at 03:58 UTC ( #732866=note: print w/ replies, xml ) Need Help??


in reply to Re: grep question using multiple lines
in thread grep question using multiple lines

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?


Comment on Re^2: grep question using multiple lines
Select or Download Code
Re^3: grep question using multiple lines
by skx (Parson) on Dec 28, 2008 at 12:53 UTC

    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
Node Status?
node history
Node Type: note [id://732866]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others perusing the Monastery: (3)
As of 2015-07-03 22:36 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (57 votes), past polls