Fórum Root.cz

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

Název: Problém se sed-em
Přispěvatel: 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?

Kód: [Vybrat]
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 05. 02. 2014, 22:38:32
Kód: [Vybrat]
sed -i -e "s/${co}/${cim}/g" $kde
Název: Re:Problém se sed-em
Přispěvatel: Jano 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 05. 02. 2014, 23:09:27
Z hlavy

Kód: [Vybrat]
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 05. 02. 2014, 23:15:40
Tak na 2. pokus snad:

Kód: [Vybrat]
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 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 05. 02. 2014, 23:24:42
Tak na 2. pokus snad:

Kód: [Vybrat]
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 05. 02. 2014, 23:30:52
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.