Beefy Boxes and Bandwidth Generously Provided by pair Networks
more useful options

Re: grep question using multiple lines

by n3toy (Hermit)
on Dec 28, 2008 at 03:30 UTC ( #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.


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 xxxxxxxxxxx xxxxxx xxxxxxx contant=hello@world.bye xxxxxxxxx xxxxxxxxxxxxxxxxxxx

    will print, 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

Log In?

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

How do I use this? | Other CB clients
Other Users?
Others lurking in the Monastery: (3)
As of 2023-05-31 16:26 GMT
Find Nodes?
    Voting Booth?

    No recent polls found