[ILUG] Re: Re: Re: Re: sed question
Marcus Furlong
furlongm at hotmail.com
Sat Aug 16 19:17:32 IST 2008
On Saturday 16 August 2008 17:24 in
<20080816162413.GU14206 at project-bob.org>, Proinnsias Breathnach wrote:
> On Sat, Aug 16, 2008 at 04:33:02PM +0100, Marcus Furlong wrote:
>> > sed -e '
>> > s/ my_attribute="ASD"/@="ASD"/g
>> > s/ my_attribute="SDF"/@="SDF"/g
>> > s/ my_attribute="DFG"/@="DFG"/g
>> > s/ my_attribute="FGH"/@="FGH"/g
>> > s/ my_attribute="GHJ"/@="GHJ"/g
>> > s/ my_attribute="HJK"/@="HJK"/g
>> > s/ *my_attribute="[^"]*"//g
>> > s/@="/ my_attribute="/g
>> > '
>> >
>> Could you explain what's happening in the above? I've searched for a
>> similar example with explanations but didn't find one, and now I'm all
>> curious.
>>
>
> Quite simple really
>
> 1) Replace the valid /my_attribute="XYZ"/ strings with /@="XYZ"/
> 2) Remove any remaining /my_attribute=/ strings (the invalid / empty
> ones)
> 3) Replace any occurance of /@=/ with /my_attribute=/ returning the
> strings to their former glory :)
>
> Easy really !
Aha! I was over-complicating it in my head, and assumed @ was some sort of
operator or array. So the above could equivalently be written as
sed -e '
s/ my_attribute="\(ASD\|SDF\|DFG\|FGH\|GHJ\|HJK\)"/@="\1"/g
s/ *my_attribute="[^"]*"//g
s/@="/ my_attribute="/g
'
Seems to work for me anyway.
Marcus.
More information about the ILUG
mailing list