Cześć.
Chciałbym poprzez jedno polecenie zmienić wartości w wielu plikach, powiedzmy, że mam np. 1000 plików z rozszerzeniem .txt (lub jakimś innym, to tylko przykład) o różnych nazwach w jednym katalogu. W pliku mam np. linijkę
(gdzie ilość to np. 2561, w każdym pliku ta wartość jest inna).
Chciałbym poprzez polecenie określając daną linijkę (np. punkty) ustawić wszystkim plikom taką samą wartość w tejże linijce, da się tak zrobić, prawda? Tylko jak? Byłbym wdzięczny za pomoc.
O coś takiego mi chodziło. Dziękuję. Nie koniecznie z potrzebą tworzenia pliku, ale to nie problem, tylko pytanie, plik ten znajdować się musi w katalogu z plikami do edycji? Tak właśnie mam, ustawiłem uprawnienia i nie działa.
host:~/konta$ sh edytor.sh
: command not found
'dytor.sh: line 3: syntax error near unexpected token `do
'dytor.sh: line 3: `for file in *.txt; do
host:~/konta$
Na pewno przekopiowałeś dokładnie treść tego skryptu od balroga? Bo ja tak zrobiłem, stworzyłem sobie losowe pliki txt i nie ma problemu. Sprawdź takie coś:
kodama pisze:Na pewno przekopiowałeś dokładnie treść tego skryptu od balroga?
Tak.
kodama pisze:Nie kopiujesz tego czasem pod Windowsem i wklejasz do linuksa?
Nie pomyślałem, że może to mieć jakieś znaczenie, ale po przeczytaniu Twojego posta utworzyłem i edytowałem plik edytor.sh na Linuksie, z kolei teraz przy uruchomieniu wyświetla się tylko to:
Plik ze skryptem o nazwie edytor.sh wrzucasz do katalogu z plikami *.txt - upewnij się co do uprawnień (że może być wykonywany). Przejdź w terminalu do tego katalogu.
Przepraszam, jednak działa, nie wiem czemu wcześniej nie chciało. Stworzyłem od nowa plik, nadałem uprawnienia i działa. Wcześniej użyłem innego polecenia do utworzenia pliku niż teraz, może to miało jakieś znaczenie lub pomyliłem się z uprawnieniami. W każdym bądź radzie działa i dziękuję za udzielaną mi pomoc.
Mam tylko jeszcze ostatnie pytanie, jak przerobić ten skrypt tak, by można było edytować parę linijek z pliku, a nie tylko jedną?
Tak jak napisał kodama, tylko nie zasugeruj się tymi gwiazdkami, zwróć uwagę jak jest w skrypcie - te 2 znaki .* oznaczają dowolny ciąg. Składnia sed dla np. podwójnej zmiany (punkty=XX na punkty=16 + pozycja=XX na pozycja=4) wyglądałaby tak: