Sed problem z przetwarzaniem znaku asterisk

Problemy dotyczące programowania.

Moderatorzy: Moderatorzy, Administratorzy

Awatar użytkownika
sl_slack
Użytkownik
Posty: 47
Rejestracja: 2008-04-05, 16:19
Lokalizacja: Bydgoszcz
Kontakt:

Sed problem z przetwarzaniem znaku asterisk

Post autor: sl_slack » 2013-06-19, 09:14

hej, od pewnego czasu próbuję napisać sobie własny programik w bashu do backupu moich danych i w sumie wszystko ładnie idzie ale nie mogę sobie poradzić z przetworzeniem tekstu w sed, który zawiera w sobie znak '*' szczegóły poniżej

jest sobie zmienna

Kod: Zaznacz cały

exclude_list="test.txt plik.log *.conf"
do której to dopisuję pliki lub katalogi, których nie chce backupować (pliki/katalogi z tej zmiennej dopisywane są do tar z opcją --exclude w innej części programu)
następnie mam okna dialogowe w terminalu i tak:

Kod: Zaznacz cały

....
wyszukaj=`cat backup_config.sh  | grep exclude_list=`
							wyszukaj1=`cat backup_config.sh  | grep exclude_list= | cut -f2 -d '"'`
							dialog --title "Wprowadzanie danych" --inputbox "Podaj katalogi i pliki, które NIE mają być objęte backupem, pliki i katalogi podawaj odzielone od siebie jedynie spacją.\nObecnie NIE archiwizowane dane to: " 16 90 "$wyszukaj1" 2> Tmp/exclude_list.tmp
							zmien=`cat Tmp/exclude_list.tmp`
							spr_dane1=`cat Tmp/exclude_list.tmp | grep --regexp='"'`
							spr=$?
							if [ $spr -eq 1 ]; then
							{
								spr_dane2=`cat Tmp/exclude_list.tmp | grep '\\\'`
								spr2=$?
								if [ $spr2 -eq 1 ]; then
								{		
									 sed -i "s:$wyszukaj:exclude_list=\"$zmien\":g" backup_config.sh
										kod16=$?
										if [ $kod16 -eq 0 ]; then
										{
											dialog --title "Informacja" --backtitle " $backtitle " --msgbox "Operacja zakończyła się sukcesem!" 12 40 	
											opcje_ogolne						 
										}
										else
										{
											dialog --title "Informacja" --backtitle " $backtitle " --msgbox "Operacja zakończyła się błędem, coś jest nie tak....!" 12 40 	
											opcje_ogolne
										}
										fi
...
wydaje mi się, że mój problem znajduje się w poleceniu

Kod: Zaznacz cały

 sed -i "s:$wyszukaj:exclude_list=\"$zmien\":g" backup_config.sh
ponieważ jeśli ze zmiennej

Kod: Zaznacz cały

exclude_list
usunę znak * to wszystko działa dobrze. Macie może jakieś pomysły jak to obejść??

Pozdrawiam :)

Awatar użytkownika
webster
Użytkownik
Posty: 1265
Rejestracja: 2009-10-06, 11:58
Lokalizacja: Gdańsk
Kontakt:

Re: Sed problem z przetwarzaniem znaku asterisk

Post autor: webster » 2013-06-19, 09:29

Spr

Kod: Zaznacz cały

sed -i "s#${wyszukaj}#exclude_list=\"${zmien}\"#g" backup_config.sh
††† Chaos Of The Mirror - Valheru †††
††† I ♥ SlackWare RuLeZ †††

Slackware Poland FaceBook

Awatar użytkownika
sl_slack
Użytkownik
Posty: 47
Rejestracja: 2008-04-05, 16:19
Lokalizacja: Bydgoszcz
Kontakt:

Re: Sed problem z przetwarzaniem znaku asterisk

Post autor: sl_slack » 2013-06-19, 09:35

No nie niestety to też nie zadziałało :) A można jakoś sprawdzić jaki albo czy w ogóle wyskakuje mi jakiś błąd, w konsoli nic nie dostaje bezpośrednio...
Próbowałem już wcześniej rozwiązań ze strony http://stackoverflow.com/questions/1020 ... er-in-bash
czyli coś w stylu

Kod: Zaznacz cały

GLOBIGNORE="*"
curl_opts="-s --noproxy * -O"
curl $curl_opts "$1"  ## no filename expansion
ale też nie pomogło.

Awatar użytkownika
webster
Użytkownik
Posty: 1265
Rejestracja: 2009-10-06, 11:58
Lokalizacja: Gdańsk
Kontakt:

Re: Sed problem z przetwarzaniem znaku asterisk

Post autor: webster » 2013-06-19, 09:48

a Możesz pokazać wynik echo "sed -i "s#${wyszukaj}#exclude_list=\"${zmien}\"#g" backup_config.sh" przed Jej wykonaniem ?
††† Chaos Of The Mirror - Valheru †††
††† I ♥ SlackWare RuLeZ †††

Slackware Poland FaceBook

Awatar użytkownika
sl_slack
Użytkownik
Posty: 47
Rejestracja: 2008-04-05, 16:19
Lokalizacja: Bydgoszcz
Kontakt:

Re: Sed problem z przetwarzaniem znaku asterisk

Post autor: sl_slack » 2013-06-19, 10:00

wyświetliło mi dokładnie tak

Kod: Zaznacz cały

sed -i s#exclude_list="test.txt plik.log *.conf"#exclude_list="test.txt plik.log *.conf test2.file"#g backup_config.sh

Sajmon
Moderator
Posty: 1128
Rejestracja: 2004-05-22, 23:19
Lokalizacja: Graz
Kontakt:

Re: Sed problem z przetwarzaniem znaku asterisk

Post autor: Sajmon » 2013-06-20, 16:36

$ cat backup_config.sh
exclude_list="test.txt plik.log *.conf"

Kod: Zaznacz cały

sed -i 's#exclude_list="test.txt plik.log \*.conf"#exclude_list="test.txt plik.log \*.conf test2.file"#g' backup_config.sh
$ cat backup_config.sh
exclude_list="test.txt plik.log *.conf test2.file"
[url=http://polish-32053322658.spampoison.com][img]http://pics3.inxhost.com/images/sticker.gif[/img][/url]
perl -e 'print $i=pack(c5,(41*2),sqrt(7056),(unpack(c,H)-2),oct(115),10);'

Awatar użytkownika
sl_slack
Użytkownik
Posty: 47
Rejestracja: 2008-04-05, 16:19
Lokalizacja: Bydgoszcz
Kontakt:

Re: Sed problem z przetwarzaniem znaku asterisk

Post autor: sl_slack » 2013-06-21, 08:52

Prawde mówiąc to nie rozumiem o co chodzi Ci Sajmon... chyba , że o znak \ ale to nie za bardzo rozwiązuje mój problem, ponieważ zmienna exclude_list jest zmieniana w oknach dialogowych... a poza tym zakazałem wpisywania znaku \ ponieważ gdyby ktoś postawił go na końcu zmiennej exclude_list przed zamykającym znakiem " (cudzysłów) to rozwaliło by mi to cały plik :)
Narazie obszedłem problem tak, że jak ktoś dodaje coś do zmiennej exclude_list ze znakiem *.cos to z automatu zmienia mi znaki *. na ciąg liczb a następnie w innym pliku przy tarowaniu i pobieraniu danych z tej zmiennej, zmieniam na chwile ten ciąg liczb spowrotem na znaki *.

Awatar użytkownika
mina86
Moderator
Posty: 3314
Rejestracja: 2004-06-14, 21:58
Lokalizacja: Linux 4.x x86_64
Kontakt:

Re: Sed problem z przetwarzaniem znaku asterisk

Post autor: mina86 » 2013-06-21, 12:30

No bo sobie tylko życie utrudniasz:

Kod: Zaznacz cały

sed s#^exclude_list=".*"#exclude_list="$zmien"#
Nie zmienia to jednak faktu, że $zmien może zawierac dajmy na to “#”.
Zastrzegam sobie prawo nieanalizowania postów pisanych niepoprawną polszczyzną. :: Post generated automatically by A.I. system called “mina86” in response to the previous one. :: Tiny Applications

Awatar użytkownika
sl_slack
Użytkownik
Posty: 47
Rejestracja: 2008-04-05, 16:19
Lokalizacja: Bydgoszcz
Kontakt:

Re: Sed problem z przetwarzaniem znaku asterisk

Post autor: sl_slack » 2013-06-21, 14:58

No wiem, że sobie utrudniam :) ale to dlatego, że nie mogę wyszukać rozwiązania... mina86 Twój przykład już wcześniej też testowałem i nie działał.
Ogólnie problem rozwiązałem "okrężną drogą" ale działającą ;)
btw jeśli ktoś by znalazł sposób bardziej profesjonalny to zawsze chętnie wypróbuje...

pozdrawiam

Awatar użytkownika
mina86
Moderator
Posty: 3314
Rejestracja: 2004-06-14, 21:58
Lokalizacja: Linux 4.x x86_64
Kontakt:

Re: Sed problem z przetwarzaniem znaku asterisk

Post autor: mina86 » 2013-06-25, 16:53

Ah no tak, bo zapomniałem o cytowaniu:

Kod: Zaznacz cały

sed "s#^exclude_list=.*#exclude_list='$zmien'#"
Zastrzegam sobie prawo nieanalizowania postów pisanych niepoprawną polszczyzną. :: Post generated automatically by A.I. system called “mina86” in response to the previous one. :: Tiny Applications

ODPOWIEDZ