Jak zastąpić słowa w plikach - csh

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
945gdvi
Piegowaty Guziec
Piegowaty Guziec
Posty: 5
Rejestracja: 21 wrz 2009, 17:49
Płeć: Mężczyzna
Wersja Ubuntu: 9.04
Środowisko graficzne: KDE Plasma
Architektura: x86

Jak zastąpić słowa w plikach - csh

Post 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
Ostatnio zmieniony 25 maja 2012, 21:08 przez 945gdvi, łącznie zmieniany 1 raz.
Awatar użytkownika
liftboy syndrome
Wytworny Kaczor
Wytworny Kaczor
Posty: 336
Rejestracja: 05 maja 2012, 21:48
Płeć: Mężczyzna

Re: Problem ze skryptem csh

Post autor: liftboy syndrome »

Kod: Zaznacz cały

foreach plik (*)
echo $plik
end
945gdvi
Piegowaty Guziec
Piegowaty Guziec
Posty: 5
Rejestracja: 21 wrz 2009, 17:49
Płeć: Mężczyzna
Wersja Ubuntu: 9.04
Środowisko graficzne: KDE Plasma
Architektura: x86

Re: Jak zastąpić słowa w plikach - csh

Post 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
Awatar użytkownika
liftboy syndrome
Wytworny Kaczor
Wytworny Kaczor
Posty: 336
Rejestracja: 05 maja 2012, 21:48
Płeć: Mężczyzna

Re: Jak zastąpić słowa w plikach - csh

Post autor: liftboy syndrome »

Powyższy kod to przykład jak się "przelecieć" w csh po wszystkich plikach w katalogu.
945gdvi
Piegowaty Guziec
Piegowaty Guziec
Posty: 5
Rejestracja: 21 wrz 2009, 17:49
Płeć: Mężczyzna
Wersja Ubuntu: 9.04
Środowisko graficzne: KDE Plasma
Architektura: x86

Re: Jak zastąpić słowa w plikach - csh

Post 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.
Mały 1
Zakręcona Traszka
Zakręcona Traszka
Posty: 548
Rejestracja: 24 sty 2008, 15:55
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: LXDE
Architektura: x86_64

Re: Jak zastąpić słowa w plikach - csh

Post autor: Mały 1 »

Wpisywane słowa z klawiatury możesz pobierać np. tak:

Kod: Zaznacz cały

awk 'BEGIN{getline a; print a}'
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 }}'
Awatar użytkownika
liftboy syndrome
Wytworny Kaczor
Wytworny Kaczor
Posty: 336
Rejestracja: 05 maja 2012, 21:48
Płeć: Mężczyzna

Re: Jak zastąpić słowa w plikach - csh

Post autor: liftboy syndrome »

945gdvi pisze:jak sprawić, by można było je podawać z klawiatury?

Kod: Zaznacz cały

set zmienna = $<
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
;)
Mały 1
Zakręcona Traszka
Zakręcona Traszka
Posty: 548
Rejestracja: 24 sty 2008, 15:55
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: LXDE
Architektura: x86_64

Re: Jak zastąpić słowa w plikach - csh

Post 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
945gdvi
Piegowaty Guziec
Piegowaty Guziec
Posty: 5
Rejestracja: 21 wrz 2009, 17:49
Płeć: Mężczyzna
Wersja Ubuntu: 9.04
Środowisko graficzne: KDE Plasma
Architektura: x86

Re: Jak zastąpić słowa w plikach - csh

Post 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 ;)
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 4 gości