Michiru utworzono 7 lutego 2011 utworzono 7 lutego 2011 Bardzo potrzebuję pomocy. Otóż muszę napisać skrypt, który będzie otwierał dany plik, wyszukiwał wszystkie litery "H" i zamieniał je na "G", a wszystkie pozostałe znaki zamieni na "E". Niestety dopiero zaczynam moją naukę i nie mam pojęcia jak to zrobić Będę bardzo wdzięczna za wszelką pomoc.
Garrappachc komentarz 7 lutego 2011 komentarz 7 lutego 2011 Chodzi Ci o skrypt Basha? Jako, że ma to być Twoja praca, nie napiszę tego skryptu za Ciebie, ale podpowiem kilka rzeczy Primo - kurs Basha: [url="http://dief.republika.pl/main.html"]http://dief.republika.pl/main.html[/url] - przeczytaj sobie "Hello, world!", żebyś wiedział, jak wygląda mniej-więcej składnia basha. Różni się dość znacznie od składni C++ czy Pascala. Secundo - w Bashu nie masz czegoś takiego jak otwieranie pliku. Po prostu masz jakieś polecenie, którego argumentem może być nazwa pliku. Tertio - polecenie, które Cię najprawdopodobniej zainteresuje, to [b]sed[/b]. Polecam how-to gentoo: [url="http://www.gentoo.org/doc/pl/articles/l-sed1.xml"]http://www.gentoo.org/doc/pl/articles/l-sed1.xml[/url], [url="http://www.gentoo.org/doc/pl/articles/l-sed2.xml"]http://www.gentoo.org/doc/pl/articles/l-sed2.xml[/url] Powodzenia Jakbyś miał jakieś pytania, to wal.
Michiru komentarz 8 lutego 2011 Autor komentarz 8 lutego 2011 Obejrzałam podane materiały i już widzę to trochę przejrzyściej, aczkolwiek wciąż mam duże problemy. Czy będzie to wyglądało tak: #!/bin/bash if -e H plik; # sprawdzi czy w pliku "plik" istnieje litera "H" then sed 's/H/G/g' plik # zamieni wszystkie litery "H" na "G" elseif -e K plik; # sprawdzi czy istnieje litera "K" then sed 's/K/I/g' plik else sed 's//E/g' plik # wszystkie pozostałe znaki zamieni na "E" fi Jakbym chciała utworzony w ten sposób plik zapisać pod inną nazwą to czy wystarczy na końcu skryptu dodać: plik > plik2
Garrappachc komentarz 9 lutego 2011 komentarz 9 lutego 2011 Kod źródłowy zapisuj w tagach [code]. Ogólnie fajnie to wygląda. Brawo.
Michiru komentarz 12 lutego 2011 Autor komentarz 12 lutego 2011 (edytowane) niestety ten skrypt nie działa i nie mam pojęcia co jest źle. Czy mógłby mi ktoś jakoś podpowiedzieć?
Garrappachc komentarz 12 lutego 2011 komentarz 12 lutego 2011 Czy jak go odpalisz to coś się wyświetla? Nadałeś mu odpowiednie chmody? Czy te polecenia wydane poza programem (sed) działają? Co konkretnie nie działa?
Michiru komentarz 12 lutego 2011 Autor komentarz 12 lutego 2011 skrypt w ogóle nie chce się skompilować Teraz napisałam tak: [code]#!/bin/bash cat plik | sed -e 's/H/G/g' plik | sed -e 's/K/I/g' plik | sed -e 's/[a-z]/-/g' plik > plik2[/code] i także nie chce się skompilować
Garrappachc komentarz 12 lutego 2011 komentarz 12 lutego 2011 Eeee, czekaj. Skompilować? Skrypt chcesz kompilować? Ło matko, jaką komendą, za przeproszeniem? Skryptu nie kompilujesz, skrypt jest interpretowany. Taki pliczek zapisujesz, nadajesz mu prawa do wykonywania i uruchamiasz. Niczego nie kompilujesz, to nie C++.
Michiru komentarz 12 lutego 2011 Autor komentarz 12 lutego 2011 Tak, ale nadałam odpowiednie uprawnienia, a skrypt nadal nie działa. Ani w tej wersji powyżej, ani w tej z pętlą if. odpowiedniejsza jednak wydaje mi się ta wersja z pętlą, jednak nie mam pojęcia czemu nie działa
Garrappachc komentarz 12 lutego 2011 komentarz 12 lutego 2011 Ale co wyświetla? Jaki jest błąd? Powiedz coś więcej.
Michiru komentarz 13 lutego 2011 Autor komentarz 13 lutego 2011 jakieś błędy składniowe. Czy w ogóle poniższe polecenie jest poprawne? [code] if -e H plik; # sprawdzi czy w pliku "plik" istnieje litera "H"[/code]
Garrappachc komentarz 13 lutego 2011 komentarz 13 lutego 2011 [quote name='Michiru' timestamp='1297617301' post='1198764'] jakieś błędy składniowe. Czy w ogóle poniższe polecenie jest poprawne? [code] if -e H plik; # sprawdzi czy w pliku "plik" istnieje litera "H"[/code] [/quote] Jakie błędy składniowe? Dajże jakieś konkrety. Wywal też te ify, niepotrzebne są.
Wciąż szukasz rozwiązania problemu? Napisz teraz na forum!
Możesz zadać pytanie bez konieczności rejestracji - wystarczy, że wypełnisz formularz.