Skrypt do edycji zawartości pliku

0

Witam
Czy może mi ktoś pomóc w napisaniu skryptu. Mam powtarzalna prace i edytuje pliku w notepad++ ale jest to uciążliwe. Szukałem rozwiązań ale nic nie znalazłem.
Potrzebuje napisac skrypt (moze byc batch albo powershell), który zamieni mi we wszystkich plikach w katalogu z rozszeżeniem .prop słowo "kamil" (słowo "kamil" może znajdować się pliku kilkukrotnie) na wartośc która podam po odpaleniu skryptu. Mam 3 rożne słowa które muszę zamienić za każdym razem na inna wartość, która za każdym razem muszę wpisać po uruchomieniu skryptu. Np
skrypt wyswietli

  1. Podaj nowy wartosc dla "Kamil": wpisuje Adam - we wszystkich plikach zamienia mi Kamil na Adam
  2. Podaj nowy wartosc dla "Ala": wpisuje Kasia - we wszystkich plikach zamienia mi Kamil na Adam
  3. Podaj nowy wartosc dla "Marek": wpisuje Janek - we wszystkich plikach zamienia mi Kamil na Adam

po podaniu 3 nowych wartości skrypt wykona się we wszystkich plikach

1

Jakiej konkretnie pomocy potrzebujesz? Wybierz sobie dowolny znany przez siebie język programowania, lub Pythona jeśli nie znasz żadnego, i poszukaj w sieci odpowiedniej dokumentacji.

Na przykład, dla Pythona:

  1. Wyszukanie wszystkich potrzebnych plików: pathlib.glob
  2. Wczytanie zawartości tekstowej: pathlib.read_test
  3. Podmiana tekstu: str.replace lub str.translate
0

@Althorion:
+1

A nie ma coś gotowego w tradycji linuksowej??? Prawie na pewno jest jakiś batchowy edytor. Najstarsze implementacje vi tak były zbudowane

Z trzeciej strony multi file edytor (emacs / vi), większość z nich będzie miała zmianę w wielu pliakch

2

Czy to jednorazowa akcja czy zamierzasz to robić regularnie?

Bo jeśli zamierzasz robić to regularnie, to przemyślałbym użycie szablonów (np. Python + Jinja czy Node.js + Nunjucks). Wtedy definiujesz pliki od razu zostawiając pola na dane:

Hello, {{ name }}!
Welcome in {{ year }}.

i potem uzupełniasz o dane i silnik szablonów sam uzupełni np.

Hello, John!
Welcome in 2023

I takie szablony mają też więcej ciekawych opcji. Np. można wyświetlać parę rzeczy naraz w pętli albo robić warunki i wyświetlać coś tylko czasami w zależności od warunku. Albo tworzyć jeden plik z kilku szablonów.

Pytanie, czy ci się przydadzą w tym kejsie, który masz. Szablony mogą być spoko, jeśli robisz coś od zera, ale to samo ze zmienionymi danymi. Co innego jeśli zmieniasz coś doraźnie już w istniejących plikach, które nie ty generujesz (wtedy pewnie będzie lepiej faktycznie przejechać się po plikach i pozamieniać)
np. używając uniksowego toola sed można to tak zrobić dla jednego pliku:

sed s/Kamil/Adam/g nazwa_pliku.txt
4
LukeJL napisał(a):
sed s/Kamil/Adam/g nazwa_pliku.txt

sed to iMHO świetny pomysł, ale działa tylko na pojedynczym pliku. Na szczeście jest SO gdzie już zadano to pytanie

https://stackoverflow.com/questions/905144/changing-all-occurrences-in-a-folder

Czyli pewnie coś takiego:

find . -type f -exec sed -i.bak  "s/Kamil/Adam/g" {} \;

1 użytkowników online, w tym zalogowanych: 0, gości: 1