Newsgroup: it.comp.os.linux.iniziare
Titolo: Editare un file di testo

Salve a tutti,
avrei bisgono di editare un file di testo di circa 500 MB, si tratta di un
file di log mensile.
In pratica avrei necessita' di rimpiazzare una stringa di testo per ogni
riga, ovvero di fare un "replace" per ogni occorrenza trovata.
Conosco Pico e Vi, ma non sono riuscito a trovare il sistema per fargli fare
la sostituzione in automatico su tutto il file
Qualcuno sa indicarmi la via, possibilmente con un sistema che non vada ad
occuparmi tutte le risorse di sistema "bloccando" la macchina ?
Grazie


puoi fare da vi:
:%s/cosa_cercare/come_rimpiazzare/g
oppure puoi utilizzare sed
cat nome_file | sed 's/cosa_cercare/come_rimpiazzare/g > nuovo_nome_file
--------------------------------
Inviato via 
http://usenet.libero.it

 ha scritto:

Con Vi puoi fare:
:%s/testo_da_cercare/nuovo_testo/g
oppure puoi utilizzare sed:
cat nome_log | sed 's/testo_da_cercare/nuovo_testo/g' > file_corretto


 cat nome_file | sed 's/cosa_cercare/come_rimpiazzare/g > nuovo_nome_file
grazie! ci provo...
Fabi

> cat nome_file | sed 's/cosa_cercare/come_rimpiazzare/g > nuovo_nome_file
ho provato questa sintassi ma mi da errore...
cat filedilog | sed 's/
www.nomedominio.it
 //g > pulito.log
in pratica vorrei cercare tutte le occorrenze del nome di un dominio per
ogni riga (sub stringa) e rimpiazzarle con nulla, ovvero nessuno spazio e
nessun carattere... cosa sbaglio ?
thanks

 
Con vi
:1,$s/vecchio/nuovo/
Altrimenti, senza aprire il file, puoi usare sed, awk o perl.
- sed è migliore se vuoi sostituire una stringa (esempio pippo con pluto)
- awk è migliore se vuoi sostituire un campo (es. la quarta parola di ogni 
riga)
- con perl puoi fare di tutto e di più.
ciao, Andrea

 cat filedilog | sed 's/
www.nomedominio.it
 //g > pulito.log
					      ^^^
manca l'apice di chiusura ' 
poi al massimo elimina lo spazio dopo 
www.nomedominio.it
che ti puo' creare problemi se non fosse uno spazio ma, chesso', 
una tabulazione.
-- 
The fish doesn't think ,
cause the fish knows everything
	>>>:/OuZ\:<<<
per rispondermi in mail rimuovere TOGLIQUESTO

> manca l'apice di chiusura '
era proprio l'apice ! Grazie !

 nessun carattere... cosa sbaglio ?
Devi scrivere esattamente (senza aggiungere spazi)
sed s/www\.nomedominio\.it//g filedilog > pulito.log
 
-- 
Enrico Bodo  -   Postdoc Fellow       
University of Rome "La Sapienza"    
Department of Chemistry        

Fabi wrote:

visto cosi direi che:
- manca un apice 
- i punti in una espressione regolare vengono interpretati come "un 
qualsiasi carattere"
quindi, prova con
 
sed 's/www\.nomedominio\.it //g'  filedilog > pulito.log
ciao, Andrea

 era proprio l'apice ! Grazie !
No, aspetta. rileggendo gli altri post mi sono accorto di aver
sottovalutato la cosa.
E' necessario "escapare" il carattere "." che ha un significato
particolare (vedi info o man sed) in questo modo
sed 's/www\.punto\.it/ciao/g' .
Ciao.


miracolosamente ha funzionato anche senza... beh al prossimo "escappo" per
sicurezza, thanks !


 sicurezza, thanks !
per funzionare funziona lo stesso ma avrebbe rimpiazzato anche una stringa
come wwwmnomedominioait se avessi fatto come ti dicevo erroneamente
all'inizio.
