Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: Jano 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
-
sed -i -e "s/${co}/${cim}/g" $kde
-
Díky za snahu, ale to je to stejné co jsem napsal... tak že je to taky nefunkční..
-
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
-
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]
-
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í ;)
-
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
-
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.