Posted By: JayDee (expect the unexpected) on 'CZscripts' Title: Re: perl a regexp - pamatovani patternu pro pozdejsi pouziti Date: Fri Mar 11 18:34:26 2011 > Potrebuju v shellu na commandlajne udelat filtr, ktery mi vstup upravi > tak, ze najde urcity pattern, a ten upravi tak, ze zacatek a konec > budou stejne, ale prostredek se zameni za jednu z definovanych promennych: > > a="12"; cat | perl -pe "s#(neco)(se)(w+)#3 $a 1#" > vstup: necosedeje > vystup: deje 12 neco > > problem je, kdyz nechci na vystupu vlozit mezi slova tu mezeru, tedy > kdyz chci dostat string "deje12neco". Konstrukce #3$a1# totiz zpusobi, > ze 3$a se vyhodnoti jako 312, tedy odkaz na 312. zavorku, a doplni to > nejaky nahodny dump pameti. Kdyz pouziju misto lomitek $, tedy $3$a$1, > tak se to snazi doplnit $1 a $3 ze shellu, kde tyto hodnoty nejsou > definovane a tedy jsou prazdne. Musel bych cely regexp misto do uvozovek > dat do apostrofu, ale pak se mi zase nedoplni systemova promenna $a. > > Otazka tedy je, jestli existuje nejaka konstrukce podobna shellovym > slozenym zavorkam ${a}, ktere oznaci, kde zacina a konci nazev promenne > uvozene lomitkem, a abych zaroven v takovem regexpu mohl pouzit doplneni > nejake systemove promenne. > Co treba: perl -pe "s#(neco)(se)(w+)#${3}$a${1}#" ? 1 a spol. jsou stejnak nedoporucovane coby ideologicky zavadne a nejednoznacne, spravne to ma byt $1 a $3 j.d.