Több 100 file egy sorának szöveg cseréje - hogyan?

Fórumok

Hello.

Lenne egy file-editálással kapcsolatos kérdésem:
Van több 100 htm file-om, amiknek a header részében van egy konkrét meta tag (ugyanaz mindenhol) és ebben kéne egy apró változtatást csinálni, nevezetesen egy szót kicserélni.


(META name=publisher content="Józsika, proba@emailcim.pelda")

erre:


(META name=publisher content="Béla, proba@emailcim.pelda")

Hogy tudnám ezt gyorsan megoldani, hogy ne kelljen egyenként átirogatni? Elég fontos lenne.

Sajna Windows XP alatt kell megoldanom a problémát (de gVim van!).

Előre is kösz!

P.S: A "code" BBCode tag használata mellett sem jelent meg rendesen a fenti 2 tag, ezért használtam "kacsacsőr" helyett zárójelet.

Hozzászólások

a search & replace miert nem jo erre a celra? :)

Irjál rá vizuálbézik programot. :)

--
maszili

UNXUtils/MinGW/gnuwin32 -> sh és sed -> kész

A UNXUtils volt fent a windowsos gépemen amíg volt, de van néhány hibája (pl. a seq nem hajtotta végre a -w kapcsolót, pedig a helpjében benne volt, csak kicsit volt bosszantó ezzel ezrekig számoló scripteket végrehajtani...)
A MinGW+MSYS-t egyszer próbáltam, korrekt, teljes GNU környezet. POSIX -> Win fordításhoz használják, tehát MINDEN benne van, de ehhez a feladathoz ezeknek 99%-a nem kell.
GnuWin32: sztem ide a legkézenfekvőbb, minden külön csomag, függőség libekkel vagy libek nélkül is telepíthetők, felrakod a basht + ami szükséges a scripthez és hajrá.

Lehet, hogy van egyszerűbb megoldás, de én így csinálnám.
kell egy my.script, amiben ez van:
/amit_cserélünk
:s/amit_cserélünk/amire_cserélünk
:wq

aztán meg parancssorból:
for %i in (*.html) do gvim.exe -S my.script %i

Szóval vim van. Akkor megoldás is :) !
Először is kezdd el szerkeszteni az összes .htm-et:
vim *.htm
Aztán az első file-nál kezdj el felvenni egy makrót, pl. az 'a'-t:
qa
(Alul megjelenik a 'recording' felirat.) Csináld meg a cserét:
:%s/Józsika, /Béla, /g
(Természetesen finomabban is meg lehet fogni a csere környezetét, tehát pl. hogy csak a META utáni részen cseréljen, stb.)
Aztán mentsd le a file-t:
:w
Válts a következőre:
:next
Ekkor állítsd le a makró felvételét:
q
Aztán, ha még van 499 file-od (az első már kész van), akkor játszd le az 'a' makrót 499-szer:
499@a
És ha mindent jól csináltál, kész is vagy.

ksgy, bastya_elvtars, Csigaa, zebra, gsimon!
Mindegyikőtöknek nagyon köszönöm. Asszem a gsimon féle Vim varázslatot fogom elkövetni, már csak tanulási-rögzülési okokból is :)
Majd jelzem, hogy sikerült-e.

find {amitakarsz} | xargs perl -pi -e 's/foo/bar/'

vagy exec-kel.

t

Hm, végül mielőtt script-elni kezdtem volna, találtam a Dreamweaver-ben egy ilyen opciót a "Search and Replace" részeként, úgyhogy a szűk idő miatt azzal oldottam meg. Viszont nem voltak haszontalanok a tanácsok, mert sokat tanultam belőlük és ha épp Unix alatt kell hasonló, akkor ott már nem lesz Dreamweaver :)

Még 1x kösz.