x-kom hosting

Unix - skrypt -pomocy

Michiru
utworzono
utworzono

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
komentarz

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
komentarz

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
komentarz

Kod źródłowy zapisuj w tagach [code].

Ogólnie fajnie to wygląda. Brawo.

Michiru
komentarz
komentarz (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
komentarz

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
komentarz

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
komentarz

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
komentarz

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
komentarz

Ale co wyświetla? Jaki jest błąd? Powiedz coś więcej.

Michiru
komentarz
komentarz

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
komentarz

[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.

×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Strona wykorzystuje pliki cookies w celu prawidłowego świadczenia usług i wygody użytkowników. Warunki przechowywania i dostępu do plików cookies możesz zmienić w ustawieniach przeglądarki.