Jak zastąpić słowa w plikach - csh
-
- 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
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
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.
- liftboy syndrome
- Wytworny Kaczor
- Posty: 336
- Rejestracja: 05 maja 2012, 21:48
- Płeć: Mężczyzna
Re: Problem ze skryptem csh
Kod: Zaznacz cały
foreach plik (*)
echo $plik
end
-
- 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
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
- liftboy syndrome
- Wytworny Kaczor
- Posty: 336
- Rejestracja: 05 maja 2012, 21:48
- Płeć: Mężczyzna
Re: Jak zastąpić słowa w plikach - csh
Powyższy kod to przykład jak się "przelecieć" w csh po wszystkich plikach w katalogu.
-
- 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
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.
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.
-
- 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
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{getline a; print a}'
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 }}'
- liftboy syndrome
- Wytworny Kaczor
- Posty: 336
- Rejestracja: 05 maja 2012, 21:48
- Płeć: Mężczyzna
Re: Jak zastąpić słowa w plikach - csh
945gdvi pisze:jak sprawić, by można było je podawać z klawiatury?
Kod: Zaznacz cały
set zmienna = $<
http://www.faqs.org/faqs/unix-faq/shell/csh-whynot/
http://www.grymoire.com/Unix/CshTop10.txt

-
- 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
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
-
- 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
Dzięki wielkie wszystkim za pomoc, zaliczenie na 5
Sam bym pewnie tego nie wymyślił, myślę że można zamknąć temat.
Pozdrawiam

Pozdrawiam

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