[ale] here's one for the script wizards

Richard Bronosky Richard at Bronosky.com
Wed Feb 10 12:14:30 EST 2010


echo 'foo (bar) ice cream (brown) sky is blue (airplane flies) just
flies' | sed 's/([^)]*) *//g'

On Wed, Feb 10, 2010 at 12:05 PM,  <fletch at phydeaux.org> wrote:
>
>>
>>> Sorry, I wasn't specific enough.  I'm looking to separate all the
>>> parenthesized words from the non-parenthesized:
>>>
>>> input: foo (bar) ice cream (brown) sky is blue (airplane flies) just
>>> flies
>>>
>>> output:
>>> foo ice cream sky is blue just flies
>>> (bar) (brown) (airplane flies)     --- with or without parenthesis, it
>>> doesn't matter.
>>
>> Presuming the parens aren't nested
>>
>> $ echo 'foo (bar) ice cream (brown) sky is blue (airplane flies) just
>> flies' | perl -lne
>> 'my(@n, at p);my at d=m{(\(?[^()]+\)?)\s+}g;push@{$_%2==0?\@n:\@p},$d[$_]for
>> 0..$#d;print join(" ", at n);print join(" ", at p);'
>> foo ice cream sky is blue just
>> (bar) (brown) (airplane flies)
>
> Bah, messed up the regex and it drops the last word.  Slightly tweaked
> version works better.
>
> echo 'foo (bar) ice cream (brown) sky is blue (airplane flies) just flies'
> | perl -lne
> 'my(@n, at p);my at d=m{(\(?[^()]+\)?)(?:\s+|$)}g;push@{$_%2?\@p:\@n},$d[$_]for
> 0..$#d;print join(" ", at n);print join(" ", at p);'
> foo ice cream sky is blue just flies
> (bar) (brown) (airplane flies)
>
> --
> Fletch                | "If you find my answers frightening,       __`'/|
> fletch at phydeaux.org|  Vincent, you should cease askin'          \ o.O'
>                      |  scary questions." -- Jules                =(___)=
>                      |                                               U
>
>
> _______________________________________________
> Ale mailing list
> Ale at ale.org
> http://mail.ale.org/mailman/listinfo/ale
> See JOBS, ANNOUNCE and SCHOOLS lists at
> http://mail.ale.org/mailman/listinfo
>



-- 
.!# RichardBronosky #!.



More information about the Ale mailing list