sed: Jak nahradit __NECO__ za /cesta/neco ??

Tomáš Hudec tom na abba.cz
Úterý Únor 12 01:20:20 CET 2002



Martin Mačok wrote:

> On Mon, Feb 11, 2002 at 07:26:15PM +0100, Libor Chocholaty wrote:
> 
>>>Nicmene to stejne uplne neresi Vas problem. Co se asi stane, kdyz v
>>>nazvu souboru bude : (tj. ten znak pouzity misto lomitka) ?
>>>
> 
>>Jak byste to resil vy?
>>
> 
> Nasel bych (za behu programu) nejaky znak, ktery v danem nazvu souboru
> neni a ten bych pouzil jako oddelovac retezcu ;-)
> 
> (anebo se podivat, zda je tam ta dvojtecka je, a kdyz tam je, tak
> uzivateli zanadavat a odmitnout pracovat, coz je jednodussi)

CESTA="`echo /cesta/soubor | sed 's:/:\\\\/:g'`"
echo bla __neco__ bla | sed -e "s/__neco__/$CESTA/"

Podobne by se melo osetrit i zpetne lomitko a &.

Treba takto:

$ CESTA="`echo '/ces&ta/sou\bor' | sed 's:\([/\&]\):\\\\\1:g'`"
$ echo "$CESTA"
\/ces\&ta\/sou\\bor
$ echo bla __neco__ bla | sed -e "s/__neco__/$CESTA/"
bla /ces&ta/sou\bor bla

--
Tom



Další informace o konferenci Linux