Subject: Re: [PATCHv2 4/4] git submodule: Fix handling of // and /.. in paths for added submodules

From: Johannes Sixt <[email-masked]>
Date: Wed, 25 Feb 2009 16:03:09 +0100

Michael J Gruber schrieb:
> Johannes Sixt venit, vidit, dixit 25.02.2009 15:06:
>> I think we have so far avoided \+ in sed expressions for portability reasons.
> 
> Hmmpf. Is it that new, or gnu specific? I'm always afraid of portability
> issues with bash but wasn't aware of sed being an issue as well.
> 
> In any case, would 's|\\*|/|g' be better (more portable) then?

You mean 's|//*|/|g'; yes, that is definitly portable.

> Well, how is
> 
> echo a/b/c/../../d | sed -e ':start;s|\([^/]*\)/\.\./||g;tstart'
> a/d
> 
> I meant: how portable is...

I don't know... Let's see: My AIX 4.3.3 sed understands it if it is not
all on a single line, and that says a lot. Specifically, I tried this:

echo a/b/c/../../d | sed -e ':start
             s|\([^/]*\)/\.\./||
             tstart
'

and got the desired result:

a/d

Note that the 'g' flag is not necessary in this case.

OTOH, this sed doesn't understand #comments :-/

-- Hannes