mam maly problemjest plik który zawiera linie :
JAVA_HOME=
moim celem jest zamiana tej linii na JAVA_HOME=$zmienna
gdzie $zmienna to wartość podawana przez uzytkownika....
$zmienna jest ścieżką wiec zawiera znaki /
gdy daje na sztywno ścieżke to wszystko jest ok i ladnie zmienia wartosc w pliku....jednak gdy chce wykorzystac zmienna to okazuje sie ze czysci cały plik.
moja funkcja
Działajaca:
sed "s/JAVA_HOME=/JAVA_HOME=\/usr\/bin\/java;/g"
niedziałajaca
sed "s/JAVA_HOME=/JAVA_HOME=$zmienna;/g"
bardzo prosze o jakieś wskazówki bo walcze z tym od wczoraj i nie mam juz pomyslów
EDIT:
juz sobie poradzilem
rozwiazanie :
wystarczy na zmiennej zastosować sed przed jej wyswietleniem.....
w moim przypadku wystarczylo zamienic znaki / w zmiennej na \/ przed zastosowaniem w kolejnym wyrazeniu regularnym
sed 's/\//\\\//g' input \ > input.new
zmienna=`cat input.new
sed "s/JAVA_HOME=/JAVA_HOME=$zmienna;/g"
[BASH] znaki / w zmiennej a sed
- borzole
- Serdeczny Borsuk
- Posty: 127
- Rejestracja: 10 sie 2010, 11:48
- Płeć: Mężczyzna
- Wersja Ubuntu: inny OS
- Środowisko graficzne: GNOME
- Architektura: x86_64
- Kontakt:
Odp: [BASH] znaki / w zmiennej a sed
Kod: Zaznacz cały
#!/bin/bash
zmienna="/jakaś ścieżka/do folderu"
# sposób 1: użyć innego znaku jako separatora w sed
echo -e "JAVA_HOME=" | sed s:JAVA_HOME=:JAVA_HOME="'$zmienna'":
# sposób 2: "wyeskejpować" niewygodne znaki w pomocniczej zmiennej
tmp=$(echo -e "$zmienna" | sed s:/:\\\\/:g )
echo test: $tmp
echo -e "JAVA_HOME=" | sed s/JAVA_HOME=/JAVA_HOME="'$tmp'"/
-
- Piegowaty Guziec
- Posty: 7
- Rejestracja: 09 cze 2008, 22:25
- Płeć: Mężczyzna
- Wersja Ubuntu: 8.04
- Środowisko graficzne: GNOME
Odp: [BASH] znaki / w zmiennej a sed
borzole pisze:Kod: Zaznacz cały
#!/bin/bash zmienna="/jakaś ścieżka/do folderu" # sposób 1: użyć innego znaku jako separatora w sed echo -e "JAVA_HOME=" | sed s:JAVA_HOME=:JAVA_HOME="'$zmienna'": # sposób 2: "wyeskejpować" niewygodne znaki w pomocniczej zmiennej tmp=$(echo -e "$zmienna" | sed s:/:\\\\/:g ) echo test: $tmp echo -e "JAVA_HOME=" | sed s/JAVA_HOME=/JAVA_HOME="'$tmp'"/
dzieki za odzew ale jak widzac wpadlem na to samo...tak czy inaczej dzieki za checi
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 1 gość