Sostituire tutte le occorrenze di una parola con un'altra all'interno di file differenti

Data 23/05/2010 0:10:00 | Argomento: Linux

Probabilmente il titolo di questa guida è un po' ambiguo, ma ciò che impareremo da questa guida è:
supponiamo di avere differenti file di testo puro (.txt, .html, .php, .java, ecc...) e supponiamo di voler sostituire tutte le occorrenze di una parola con un altro termine. Possiamo farlo velocemente utilizzando il comando sed!




L'uso del comando è molto semplice, ad esempio:
sed -"s/alfa/beta/g" file.txt


sed = è il comando per manipolare lo stream (sed sta per stream editor)
-i = sta per inline e permette di modificare direttamente il file
s/ = sostituisci
alfa/ = primo termine
beta/ = secondo termine
g = sta per global e permette di sostituire ogni occorrenza trovata (senza questo parametro, sostituirebbe solo la prima occorrenza in ogni riga)
file.txt = la sostituzione avviene nel file 'file.txt' contenuto nella directory corrente



Il comando sed è case-sensitive, quindi è possibile effettuare anche sostituzioni di questo tipo:
sed -"s/alfa/Alfa/g" file.txt

(permette di mettere la lettera maiuscola per ogni occorrenza di "alfa").


Infine, per giungere al nostro scopo, ovvero quello di sostituire ogni occorrenza del termine in tutti i file .txt:
sed -"s/alfa/beta/g" *.txt




This article comes from www.NonSoloGuide.altervista.org
http://www.nonsologuide.altervista.org

Il link di questa guida e':
http://www.nonsologuide.altervista.org/modules/news/article.php?storyid=153