Strona 1 z 1

za pomocą basha dodać tekst w środku innego pliku jak ?[solved]

: 20 lis 2009, 10:56
autor: Samar
Mam plik html a w nim:
<Config>
<rule xxx>
</rule>
</Config>

chciałbym dodać nową regułę w środku ale przecież nie mogę tego zrobić tak :
echo "<rule>" >> plik.html
bo doda sie na koncu , wiec jak to zrobić ?

Odp: za pomocą basha dodać tekst w środku innego pliku jak ?

: 20 lis 2009, 11:08
autor: beluosus
Może tak?

Kod: Zaznacz cały

sed -i 's/<\/Config>/<rule yyy>\n<\/rule>\n<\/Config>/' plik

Odp: za pomocą basha dodać tekst w środku innego pliku jak ?

: 20 lis 2009, 11:10
autor: otokan
Uzyj seda.
Cos w stylu

Kod: Zaznacz cały

sed -i.bak '10a costam' filename
sed -i.bak '10i costam'  filename
sed -i.bak '/re/a wiersz'  filename

Odp: za pomocą basha dodać tekst w środku innego pliku jak ?

: 20 lis 2009, 12:15
autor: Samar
zrobilem tak :
sed -i 's/...sdfs="$1"/'
i mi traktuje zmienne jako tekst :/ jak to zrobić aby zmienne traktowalo jako zmienne

Odp: za pomocą basha dodać tekst w środku innego pliku jak ?

: 20 lis 2009, 12:58
autor: otokan
Bash w pojedynczych cudzyslowach nie interpoluje zmiennych.
Daj

Kod: Zaznacz cały

... "s/...=\"$1\"/"  ...
lub

Kod: Zaznacz cały

... "s/...='$1'/"  ...
.

Odp: za pomocą basha dodać tekst w środku innego pliku jak ?

: 20 lis 2009, 13:03
autor: Samar
ale w zmiennej mam sciezke a w sciezce sa / ktore sed zinterpretuje po swojemu , trzeba by najpirew te / w zmiennej pozamieniać na \/ ....

Odp: za pomocą basha dodać tekst w środku innego pliku jak ?

: 20 lis 2009, 13:23
autor: otokan
Jako workaround mozesz uzyc w sedzie innego delimitera. Np

Kod: Zaznacz cały

sed -e "s@$@  ble@" ... 
Oczywiscie przy zalozeniu, ze znaku @ nie bedzie w $1.

Odp: za pomocą basha dodać tekst w środku innego pliku jak ?

: 20 lis 2009, 13:35
autor: Samar
wreszcie działa, dzięki wielkie.