Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem linux sed

Ahoj, v proměnné $a a $b mám libovolný text , který může obsahovat i lomítka. Chci nahradit text na stdin, tak aby před ním a za ním byl definovaný text $a a $b
Trápí mě tahle věc: echo "...." | sed "s/^/!!!" - jak mám místo 3 vykřičníků dostat text $a, aby došlo ka nahrazení a udělat to elegantně, čímž nemyslím tuto prasárnu na stackoverflow, kdy se musí několikraát použít sedn http://stackoverflow.com/questions/407523/escape-a -string-for-a-sed-replace-pattern (zatím mám verzi, kde jen nahrazuji počátek)

Předmět Autor Datum
nieco taketo? a="rasin" b="noob" echo " je " | sed -E "s/(.*)/$a\1$b/g"
wam_Spider007 31.03.2014 17:30
wam_Spider007
Zvolil jsi špatný příklad, kdy proměnná a nebo b NEOBSAHUJE lomítka a speciální znaky. Já právě potř…
Rašín 11.04.2014 17:31
Rašín
musíš to prohnat nadvakrát. Poprvé použít např. právě ten hash (nebo dvojtečku) a nahradit všechna l…
touchwood 11.04.2014 22:13
touchwood
Jenže tohle se mi zdá postup z **dele. Vždyť to je proti zdravému rozumu.
Rašín 11.04.2014 23:43
Rašín
sed prostě neumí akceptovat (nemá "vnější přepínač") na literálový výraz, jako to má např. findstr v… poslední
touchwood 12.04.2014 08:33
touchwood

Zvolil jsi špatný příklad, kdy proměnná a nebo b NEOBSAHUJE lomítka a speciální znaky. Já právě potřebuji, aby pokud replacement obsahuje lomítka, aby to neshořelo...

příklad pokud a= p/p , potom
sed "s/hledat/$a/ se rozvine na
sed "s/hledat/p/p/" a dojde k havárii

jo a nápad použít sed s#hledat#$a# problém neřeší, co kdyžáhodou $a bude mít navíc i hashe...

Zpět do poradny Odpovědět na původní otázku Nahoru