Shell scriptet írnék rá, amit nem tudok fejből, nyálaznom kellene a referencia használatiát rendesen hogy eltaláljam a helyes szintaxist. De az alap logika szerintem (aztán majd kijavítanak): 1) beolvasod a fájlt, minden sorát egy array változóba küldöd 2) regex keresést futtatsz a sorokon, ha van találat, akkor azt a sort lecseréled 3) vissza alakítod az array-t stringre, beírod az új fájlba
Szöveges fájlok egyetlen sorának változtatása parancssorban [Megoldva]
Kezdenék legózni a sed-del. pl.: sed -e 's/sarga/kek/g' file1.txt >file1kek.txt
kltHát ez nagyon tuti, egy sor. Már csak meg kell etetni egy halom txtvel és annyi. Jut eszembe valahol azt olvastam nincs olyan feladat amire az AWK ne lenne jó... Ez most már 3 külön út ugyan arra a feladatra.
bartasziliJa, ilyen a Lego :) find *.txt | while read -r nev; do sed -e 's/sarga/kek/g' $nev > $nev.kek.txt; done Aztán még ezt is lehet kalapálni, hogy tényleg jó legyen.
pnem"Sajnos, a while-t nem értem, " Eredetile find -exec {} izébizé alapján próbáltam összehebrákolni, de nem ment a második behelyettesítés. Ezért ciklust rettyintettem, hogy értsd: find *.txt megkeresi a szöveges fájljaidat. a | jel a find kimenetét becsatornázza a másik program bemenetére, ami a ciklus.. while read -r nev; Amíg van mit olvasni a bemenetről, beolvassa a "nev" változóba. Lehetne akármi a neve, én nev-nek neveztem. Innentől $nev a hivatkozás, és az helyettesíti az aktuális fájlnevet, amin dolgozol. do után jön a teendő: do sed -e 's/sarga/kek/g' $nev > $nev.kek.txt; Tehát, ha a nev=Fajl1.txt, akkor a parancs valóságos kinézete: sed -e 's/sarga/kek/g' File1.txt > File1.txt.kek.txt done pedig lezárja a ciklust. Lehet, hogy valami ilyesmire van szükséged: find *.txt | while read -r nev; do sed -e 's/sarga/kek/g' $nev > ${nev//Sarga/Kek}; done (Ezt most még nem próbáltam ki, csak okoskodás...)