Portál AbcLinuxu, 2. srpna 2025 13:27
Řešení dotazu:
sed s/^/$promenna/pokud to prikaz nevezme, zkus
sed "s/^/$promenna/"nebo
sed 's/^/'$promenna'/'vice info zde
sed "s#^#$promenna#", nebo misto krizku pouzij jiny znak nevyskytujici se v ceste
sed 's#^#'$foo'#'
mezera by ale mela delat problem jen u prvniho pripadu, zbyle dva projdou:
$ cat foo radek1 radek2 radek3 $ echo $bar toto obsahuje radek: $ sed 's/^/'$bar'/' foo toto obsahuje radek: radek1 toto obsahuje radek: radek2 toto obsahuje radek: radek3 $ sed "s/^/$bar/" foo toto obsahuje radek: radek1 toto obsahuje radek: radek2 toto obsahuje radek: radek3
To bude nějaká zvláštní verze sedu, že si to poskládá z jednotlivých parametrů (a i pak nemůže poznat rozdíl mezi jednou mezerou a dvěma). Nebo to bude shellem, který nějakým způsobem pochopí, že v tomto případě nechcete, aby mezera v hodnotě proměnné fungovala oddělovač parametrů. Každopádně mně to nefunguje (sed 4.2.1, bash 4.1.10, OpenSuSE 11.4 (skoro)):
mike@lion:~> var='a b c' mike@lion:~> seq 3 | sed -e 's/^/'$var'/' sed: -e výraz č. 1, znak 5: neukončený příkaz „s“ mike@lion:~> seq 3 | sed 's/^/'$var'/' sed: -e výraz č. 1, znak 5: neukončený příkaz „s“
export VAR='a /b c'; seq 3 |sed -e "s,^,$VAR,"
a /b c1
a /b c2
a /b c3
PM
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.