Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: Jano kdy 05. 02. 2014, 22:27:50

Název: Problém se sed-em
Přispěvatel: Jano kdy 05. 02. 2014, 22:27:50
Ahoj, mám problém se sed-em, poradil by prosím někdo proč to nejde a jak to opravit?

co="XXXXXX"
cim="$(dirname $0)/folder/ass"
kde="/tmp/soubor"
sed -i -e "s/$co/$cim/g" $kde


Děkuji pěkně za pomoc
Název: Re:Problém se sed-em
Přispěvatel: fsdfsdfsdf kdy 05. 02. 2014, 22:38:32
sed -i -e "s/${co}/${cim}/g" $kde
Název: Re:Problém se sed-em
Přispěvatel: Jano kdy 05. 02. 2014, 22:48:55
Díky za snahu, ale to je to stejné co jsem napsal... tak že je to taky nefunkční..
Název: Re:Problém se sed-em
Přispěvatel: clovek kdy 05. 02. 2014, 23:09:27
Z hlavy

co="`echo "XXXXXX" | sed -e 's/\//\\\//' `"
cim="`echo "$(dirname $0)/folder/ass | sed -e 's/\//\\\//' `"
kde="/tmp/soubor"
sed -i -e "s/$co/$cim/g" $kde
Název: Re:Problém se sed-em
Přispěvatel: clovek kdy 05. 02. 2014, 23:15:40
Tak na 2. pokus snad:

co="`echo "XXXXXX" | sed -e 's|/|\\\/|g' `"
cim="`echo "$(dirname $0)/folder/ass" | sed -e 's|/|\\\/|g' `"
kde="/tmp/soubor"
sed -i -e "s/$co/$cim/g" $kde

[/quote]
Název: Re:Problém se sed-em
Přispěvatel: libcha kdy 05. 02. 2014, 23:22:39
Problém je v tom, že v proměnné $cim cpeš do sedu další lomítka, která se pletou s lomítky vymezujícími substituci.
Můžeš však místo lomítek pro substituci použít libovolný znak, často se třeba %
sed -i -e "s%${co}%${cim}%g" ${kde}
Pokud nenastane taková prelička, že by bylo % v názvu souboru, je to dobře a elegantní ;)
Název: Re:Problém se sed-em
Přispěvatel: Jano kdy 05. 02. 2014, 23:24:42
Citace od: clovek kdy 05. 02. 2014, 23:15:40
Tak na 2. pokus snad:

co="`echo "XXXXXX" | sed -e 's|/|\\\/|g' `"
cim="`echo "$(dirname $0)/folder/ass" | sed -e 's|/|\\\/|g' `"
kde="/tmp/soubor"
sed -i -e "s/$co/$cim/g" $kde

[/quote]

Díky moc, a můžu se zeptat, proč v tom posledním řádku nemáš tu proměnnou $kde v uvozovkách když je to řetězec? Díky
Název: Re:Problém se sed-em
Přispěvatel: clovek kdy 05. 02. 2014, 23:30:52
Citace od: Jano kdy 05. 02. 2014, 23:24:42
Díky moc, a můžu se zeptat, proč v tom posledním řádku nemáš tu proměnnou $kde v uvozovkách když je to řetězec? Díky
Je to copy-paste tvojho kodu, tak som to neriesil - mozno si tam chcel dat do premennej viac suborov, aj ked je to hnus.