Strona 1 z 1
Jak zastąpić słowa w plikach - csh
: 25 maja 2012, 20:19
autor: 945gdvi
Witam serdecznie. Mam nadzieję że w dobrym dziale piszę, gdyż mam problem.
Chodzi o napisanie skryptu, który będzie edytował wszystkie pliki w katalogu podanym przez użytkownika i zastępowało w nich wybrane słowo innym słowem. Mam to napisać pod powłokę csh.
Umiem napisać, aby skrypt pytał o katalog, aby sprawdzał czy podany katalog istnieje oraz przeszedł do niego, jeśli potrzeba to wkleję kod.
Mam problem z zamianą w plikach, nie wiem jak się za to zabrać. Umiem zmienić zawartość jednego pliku poleceniem sed, lecz nie wiem jak zrobić to dla wszystkich plików w katalogu, próbowałem użyć pętli for lecz nie działa oraz nie wiem jaki warunek zadać.
Byłbym bardzo wdzięczny za wszelką okazaną pomoc.
Pozdrawiam
Re: Problem ze skryptem csh
: 25 maja 2012, 20:28
autor: liftboy syndrome
Re: Jak zastąpić słowa w plikach - csh
: 25 maja 2012, 21:10
autor: 945gdvi
Przepraszam nie rozumiem powyższego kodu. Tzn chyba pętlę ale tutaj jest wyświetlanie, czy zamiast wyświetlania można użyć komendy sed i będzie działać? Nadal nie działa niestety tak jak powinno
Re: Jak zastąpić słowa w plikach - csh
: 25 maja 2012, 21:13
autor: liftboy syndrome
Powyższy kod to przykład jak się "przelecieć" w csh po wszystkich plikach w katalogu.
Re: Jak zastąpić słowa w plikach - csh
: 26 maja 2012, 20:46
autor: 945gdvi
Dzięki, opanowałem już zmianę słów we wszystkich plikach wraz z zapisywaniem używając polecenia
sed -e 's/szukane/zamieniane/g' -i $plik
Wszystko działa, lecz słówka szukane i nowe muszę podawać na sztywno w skrypcie, jak sprawić, by można było je podawać z klawiatury? Próbowałem np $szukane albo "szukane" lecz niestety to nie działa.
Re: Jak zastąpić słowa w plikach - csh
: 26 maja 2012, 23:04
autor: Mały 1
Wpisywane słowa z klawiatury możesz pobierać np. tak:
EDIT:
Tutaj masz gotowiec do wyszukiwania i zamieniania słów w pliku (w miejsce "plik" wstaw swój plik):
Kod: Zaznacz cały
awk 'BEGIN{ printf "%s ", "Szukaj słowa:" > "/dev/stderr";
getline a; printf "%s ", "Zamień na:" > "/dev/stderr";
getline b; print "Nowy plik:"; exit }
END { while(getline < "plik") { gsub(a, b); print }}'
Re: Jak zastąpić słowa w plikach - csh
: 27 maja 2012, 12:16
autor: liftboy syndrome
945gdvi pisze:jak sprawić, by można było je podawać z klawiatury?
Btw. jeżeli robisz to na jakieś zaliczenie, to podrzuć wykładowcy te linki:
http://www.faqs.org/faqs/unix-faq/shell/csh-whynot/
http://www.grymoire.com/Unix/CshTop10.txt

Re: Jak zastąpić słowa w plikach - csh
: 27 maja 2012, 12:41
autor: Mały 1
Krótsza wersja gotowca:
Kod: Zaznacz cały
awk 'BEGIN{print "Szukaj słowa:"; getline a < "-"; print "Zamień na:"; getline b < "-"; print "Nowy plik:"}{gsub(a, b); print }' plik
Re: Jak zastąpić słowa w plikach - csh
: 05 cze 2012, 15:44
autor: 945gdvi
Dzięki wielkie wszystkim za pomoc, zaliczenie na 5

Sam bym pewnie tego nie wymyślił, myślę że można zamknąć temat.
Pozdrawiam
