PDA

Visualizza la versione completa : Sostituzione righe


Mutato
03-08-2004, 15:14
Ciao, mi sono accorto di non saper fare una cosa banale...

ho un file tipo

ciao=mutato
righa
righa
ciao=mutato

vorrei sostituire

ciao=mutato

con

ciao=nomine

e inserire la sostituzione in uno script... come faccio? Con bash e' un casino... farlo con Perl?

Sergio Pedone
03-08-2004, 15:19
cat file | sed "s/ciao=mutato/ciao=nomine/g" > file

righa?

dovrebbe bastare.

spero.

ciao.

Edit: dimenticai /g.
Edit2: g non č necessario, abituato a vim...:fagiano:

Mutato
03-08-2004, 16:00
:unz: grande.

Sai come posso farlo con Perl???

Sergio Pedone
03-08-2004, 16:29
non conosco perl! ahime'! :fagiano:

me spiaze!

adarkar
03-08-2004, 18:54
Originariamente inviato da Sergio Pedone
cat file | sed "s/ciao=mutato/ciao=nomine/g" > file

ARGH!
io se faccio cosė mi piglia 'file' e me lo svuota completamente!
nel senso che lo apre per la scrittura e quindi viene cancellato, a voi non fa cosė? :oVVoVe:

Sergio Pedone
03-08-2004, 19:14
Originariamente inviato da adarkar
ARGH!
io se faccio cosė mi piglia 'file' e me lo svuota completamente!
nel senso che lo apre per la scrittura e quindi viene cancellato, a voi non fa cosė? :oVVoVe:
cat file | sed "s/ciao=mutato/ciao=nomine/" > file

questo comando funziona perfettamente. :prrr:
come puoi vedere ho tolto la 'g' perche con sed
non serve, visto che elabora il file riga per riga.
Boh, li ho provati prima di postare e... vanno bene.
Ho effettuato il test ed ecco i risultati:


sergio@winnie:~$ cat file
ciao=mutato
righa
righa
ciao=mutato
sergio@winnie:~$ cat file | sed "s/mutato/adarkar/" > file
sergio@winnie:~$ cat file
ciao=adarkar
righa
righa
ciao=adarkar
sergio@winnie:~$


Ciao.

adarkar
03-08-2004, 19:16
ah ok :oVVoVe:
io ci ho perso dei bei file a fare a quella maniera lė x il motivo che ho detto sopra, boh :oVVoVe:

:ciauz:

Sergio Pedone
03-08-2004, 19:18
Originariamente inviato da adarkar
ah ok :oVVoVe:
io ci ho perso dei bei file a fare a quella maniera lė x il motivo che ho detto sopra, boh :oVVoVe:

:ciauz:
a mie spese, ho imparato a testare gli script
sulle copie di file/directory originali.

ciao.

adarkar
03-08-2004, 19:19
idem :yuppi:

Mutato
03-08-2004, 20:08
Originariamente inviato da adarkar
ARGH!
io se faccio cosė mi piglia 'file' e me lo svuota completamente!
nel senso che lo apre per la scrittura e quindi viene cancellato, a voi non fa cosė? :oVVoVe:

Non dovrebbe accadere, perche' con cat mandi in STDOUT il file, con sed operi la sostituzione e con ">" recuperi lo STDOUT e lo ridirezioni a "file" che viene sovrascritto.

Ho notato, pero', che se il file e' molto grande c'e' il rischio che lo cancelli. Ad esempio

cat file | grep -v "parola" > file

mi funziona su file piccoli e medi, ma su file grandi no. Deve esserci qualcosa che ha a che fare con la memoria, per questo, per essere sicuro che faccia tutto bene solitamente faccio

cat file | grep -v "parola" > ciao && mv ciao file

Loading