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

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
Samar
Sędziwy Jeż
Sędziwy Jeż
Posty: 57
Rejestracja: 09 paź 2006, 16:58
Płeć: Mężczyzna
Wersja Ubuntu: 8.10
Środowisko graficzne: GNOME

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

Post 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ć ?
Awatar użytkownika
beluosus
Zakręcona Traszka
Zakręcona Traszka
Posty: 695
Rejestracja: 01 paź 2006, 15:32
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Xfce
Architektura: x86
Kontakt:

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

Post autor: beluosus »

Może tak?

Kod: Zaznacz cały

sed -i 's/<\/Config>/<rule yyy>\n<\/rule>\n<\/Config>/' plik
Kurs Linuksa: for i in $(ls /bin); do man $i; done
__________________
http://beluosus.pl/
otokan
Sędziwy Jeż
Sędziwy Jeż
Posty: 65
Rejestracja: 11 gru 2008, 11:20
Płeć: Mężczyzna
Wersja Ubuntu: 10.04
Środowisko graficzne: GNOME
Architektura: x86

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

Post 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
Samar
Sędziwy Jeż
Sędziwy Jeż
Posty: 57
Rejestracja: 09 paź 2006, 16:58
Płeć: Mężczyzna
Wersja Ubuntu: 8.10
Środowisko graficzne: GNOME

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

Post autor: Samar »

zrobilem tak :
sed -i 's/...sdfs="$1"/'
i mi traktuje zmienne jako tekst :/ jak to zrobić aby zmienne traktowalo jako zmienne
otokan
Sędziwy Jeż
Sędziwy Jeż
Posty: 65
Rejestracja: 11 gru 2008, 11:20
Płeć: Mężczyzna
Wersja Ubuntu: 10.04
Środowisko graficzne: GNOME
Architektura: x86

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

Post autor: otokan »

Bash w pojedynczych cudzyslowach nie interpoluje zmiennych.
Daj

Kod: Zaznacz cały

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

Kod: Zaznacz cały

... "s/...='$1'/"  ...
.
Samar
Sędziwy Jeż
Sędziwy Jeż
Posty: 57
Rejestracja: 09 paź 2006, 16:58
Płeć: Mężczyzna
Wersja Ubuntu: 8.10
Środowisko graficzne: GNOME

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

Post autor: Samar »

ale w zmiennej mam sciezke a w sciezce sa / ktore sed zinterpretuje po swojemu , trzeba by najpirew te / w zmiennej pozamieniać na \/ ....
otokan
Sędziwy Jeż
Sędziwy Jeż
Posty: 65
Rejestracja: 11 gru 2008, 11:20
Płeć: Mężczyzna
Wersja Ubuntu: 10.04
Środowisko graficzne: GNOME
Architektura: x86

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

Post 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.
Samar
Sędziwy Jeż
Sędziwy Jeż
Posty: 57
Rejestracja: 09 paź 2006, 16:58
Płeć: Mężczyzna
Wersja Ubuntu: 8.10
Środowisko graficzne: GNOME

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

Post autor: Samar »

wreszcie działa, dzięki wielkie.
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 8 gości