String replace in mai multe fisiere

7 posts / 0 new
Last post
MaTricks
String replace in mai multe fisiere

Exista un program care sa poata face inlocuirea unui string in mai multe fisiere?
Am 97 de fisiere in care trebuie sa inlocuiesc mai multe cuvinte cu altele.
As prefera un program cu interfata, deoarece e posibil sa il mai foloseasca si altii (care nu prea agreeaza ideea de konsola).

Totusi, in mod particular as vrea sa stiu cum pot face acest lucru din linie de comanda. Inlocuirea in mod recursiv a expresiei AlbNegru_ cu AN_ .
Fisierele nu sunt toate in acelasi director, ci in mai multe directoare.
Am incercat cu sed dar nu stiu cum sa il folosesc pentru mai multe fisiere.

admin
admin's picture
Re: String replace in mai multe fisiere

poti face o lista cu toate aceste fisiere si apoi din bash ceva de genu:

for file in `cat /calea/catre/lista-cu-fisiere`; do sed -i.bak s/AlbNegru_/AN_/g $file; done

dupa comanda asta, teoretic, iti vei fi inlocuit toate instantele cuvantului AlbNegru_ cu AN_, iar fisierul original, nemodificat iti va fi salvat ca fisier.bak

succes :-D

cosmin
cosmin's picture
Re: String replace in mai multe fisiere

Pentru interfaţă grafică, încearcă kfilereplace.

[url=http://counter.li.org/]Linux registered user #368449[/url]

MaTricks
Re: String replace in mai multe fisiere

Quote:
cosmin wrote:
Pentru interfaţă grafică, încearcă kfilereplace.

Multumesc pentru ambele indicatii.
Imi sunt suficiente.

kfilereplace este o adeavrata comoara.

La inceput a fost . . . kernelul!
Close Windows...Open Source.

MaTricks
Re: String replace in mai multe fisiere

Quote:
maaxx wrote:
poti face o lista cu toate aceste fisiere si apoi din bash ceva de genu:

for file in `cat /calea/catre/lista-cu-fisiere`; do sed -i.bak s/AlbNegru_/AN_/g $file; done

dupa comanda asta, teoretic, iti vei fi inlocuit toate instantele cuvantului AlbNegru_ cu AN_, iar fisierul original, nemodificat iti va fi salvat ca fisier.bak

succes :-D

E super comanda sed
Dar am dat de o problema in care nu stiu cum sa folosesc sed, deoarece trebuie sa inlocuiesc intr-un fisier caracterul $ cu caracterul , .
Din nefericire $ este un flag (sau cum se numeste). Am incercat sa il pun intre ghilimele dar tot nu il interpreteaza ca si caracter.

sed -i.bak 's/"$"/,/g' products.php
sed -i.bak 's/$/,/g' products.php
sed -i.bak 's/'$'/,/g' products.php
sed -i.bak 's/$/,/g' products.php

Astea sunt alternativele incercate de mine.
Are cineva idee cum sa fac?

La inceput a fost . . . kernelul!
Close Windows...Open Source.

cosmin
cosmin's picture
Re: String replace in mai multe fisiere

În expresiile regulate, dolarul are semnificaţia de sfârşit de linie. Asemenea caractere speciale pot fi potrivite prin "escape", adică prin adăugarea unui backslash în faţa lor.
Cu alte cuvinte, trebuie să pui \$.

[url=http://counter.li.org/]Linux registered user #368449[/url]

MaTricks
Re: String replace in mai multe fisiere

Quote:
cosmin wrote:
În expresiile regulate, dolarul are semnificaţia de sfârşit de linie. Asemenea caractere speciale pot fi potrivite prin "escape", adică prin adăugarea unui backslash în faţa lor.
Cu alte cuvinte, trebuie să pui \$.

A functionat perfect. Multumesc mult Cosmin.

La inceput a fost . . . kernelul!
Close Windows...Open Source.