nagardd Napisano Wrzesień 22, 2008 Zgłoszenie Share Napisano Wrzesień 22, 2008 Witam, Mam nastepujacy problem w Bash'u: Zmienna $zmienna moze zawierac rozne wartosci. Np. $zmienna=string1 $zmienna=string1/string2 Chcialbym aby skrypt wczytal zmienna i wyszukal zdefiniowany wzorzec znaku np. "/" i zamienil go na inny. - Wzorzec moze byc dowolny - Znak ktory jest szukany nie koniecznie musi istniec W moim skrypcie zmienna $TZ moze miec rozne wartosci jak: Japan lub US/Pacific. Nastepnie ta zmienna przekazuje do sed: sed "s/timezone=.*/timezone=$TZ/g" sysidcfg > sysidcfg.new Niestety gdy $TZ zawiera "/" to sed sie wywala. Prosze o pomoc, Daniel Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
ecik__ Napisano Wrzesień 22, 2008 Zgłoszenie Share Napisano Wrzesień 22, 2008 W poleceniu s sed traktuje następny znak po s jako separator pól. Zatem, aby uniknąć problemu z / można zrobić np. sed "s#timezone=.*#timezone=$TZ#g" sysidcfg > sysidcfg.new Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
nagardd Napisano Wrzesień 22, 2008 Autor Zgłoszenie Share Napisano Wrzesień 22, 2008 W poleceniu s sed traktuje następny znak po s jako separator pól. Zatem, aby uniknąć problemu z / można zrobić np. sed "s#timezone=.*#timezone=$TZ#g" sysidcfg > sysidcfg.new Dziala, dzieki wielkie. Czytajac tutoriale na sieci do sed'a nie spotkalem sie z ta opcja "#". Mam jeszcze jedno pytanie odnosnie mojego postu. Czy da sie w bash'u czytac litera po literze zmienna zawierajaca dany text np "abcdef" i potem zamienic np "c" na "x" jesli spelniony zostanie jakis warunek? Pozdrawiam, Daniel Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
ecik__ Napisano Wrzesień 22, 2008 Zgłoszenie Share Napisano Wrzesień 22, 2008 Czy da sie w bash'u czytac litera po literze zmienna zawierajaca dany text np "abcdef" i potem zamienic np "c" na "x" jesli spelniony zostanie jakis warunek? Nie napisałeś o co konkretnie chodzi (najlepiej jakiś przykład) więc nie jestem w stanie udzielić konkretnej odpowiedzi ;] Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
nagardd Napisano Wrzesień 22, 2008 Autor Zgłoszenie Share Napisano Wrzesień 22, 2008 Chodzi mi o taki teoretyczny przyklad. Zmienna $zm zawiera ciag znakow "abcd*efgh". Jeli w tym ciagu znakow wystepuje "*" to zamien to na "$". Jesli nie ma znaku "*" tzn. $zm="abcdefgh" to nie rob nic. Pozdrawiam, Daniel Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
ecik__ Napisano Wrzesień 22, 2008 Zgłoszenie Share Napisano Wrzesień 22, 2008 [ecik@ecik ~]$ echo abcd*efgh abcd*efgh [ecik@ecik ~]$ echo abcd*efgh | sed "y#*#\$#" abcd$efgh [ecik@ecik ~]$ echo abcdefgh | sed "y#*#\$#" abcdefgh Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
nagardd Napisano Wrzesień 22, 2008 Autor Zgłoszenie Share Napisano Wrzesień 22, 2008 Dzieki! O to mi chodzilo. Pozdrawiam, Daniel Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się