[mdlug] Another sed/regex question

Carl T. Miller carl at carltm.com
Sun Sep 28 07:21:40 EDT 2014


Jeff Hanson wrote:
> The answer was "t".
> http://www.reddit.com/r/commandline/comments/2hmbdy/conditional_actions_ifthenelse_in_sed/

Wow.  I didn't know about "t" or "T" which are gnu
extensions.  Very nice.

c

>
> On Sat, Sep 27, 2014 at 6:38 AM, Carl T. Miller <carl at carltm.com> wrote:
>
>> Jeff Hanson wrote:
>> > The program is WeiDu, a mod installer for Infinity engine games
>> (Baldur's
>> > Gate, etc.) I'm generating a highlighted list based on component IDs
>> that
>> > will be installed.
>> >
>> > weidu output (long lines will wrap in email):
>> > [./chitin.key] 357 BIFFs, 54184 resources
>> > [./dialog.tlk] 94183 string entries
>> > [widescreen/tra/english/setup.tra] has 31 translation strings
>> > ~WIDESCREEN/WIDESCREEN.TP2~ #0 #0 // Widescreen Mod -> for the
>> original
>> > Infinity Engine (CHOOSE THIS!): Widescreen Mod v3.02
>> > ~WIDESCREEN/WIDESCREEN.TP2~ #0 #1 // Widescreen Mod -> for GemRB:
>> > Widescreen Mod v3.02
>> >
>> > First #0 is language ID and doesn't change.  The second #digit is the
>> > component ID, followed by two undesirable forward slashes and the
>> > component
>> > ID description.  Given an installed component ID of 0, output from
>> current
>> > sed mess is as follows (\x1b is sed replacement hex for ESC):
>> >
>> > \x1b[1;32m0 Widescreen Mod -> for the original Infinity Engine (CHOOSE
>> > THIS!): Widescreen Mod v3.02\x1b[0m
>> > \x1b[0;31m1 Widescreen Mod -> for GemRB: Widescreen Mod v3.02\x1b[0m
>> >
>> > The first matches and is green, the second doesn't and is red.  What I
>> use
>> > now works but is really ugly.  I'm just looking for a way to choose
>> > between
>> > two different replacements based on a successful match.  The search
>> > pattern
>> > uses grouping and the replacements use backreferences to select the ID
>> and
>> > description from the input.
>>
>> Okay, now I understand it.  And now I understand that phrase
>> "beauty is in the eye of the beholder."  To me your original
>> sed line with the two expressions was an elegant solution,
>> which I appreciate all the more after finding that sed does
>> not have an "else" syntax.
>>
>> c
>>
>>
>> _______________________________________________
>> mdlug mailing list
>> mdlug at mdlug.org
>> http://mdlug.org/mailman/listinfo/mdlug
>>
> _______________________________________________
> mdlug mailing list
> mdlug at mdlug.org
> http://mdlug.org/mailman/listinfo/mdlug
>




More information about the mdlug mailing list