Find & replace di una stringa in più file con Bash!
Oggi scrivo di una scoperta che mi hanno fatto fare al lavoro… spettacolo!!!
Dovevo sostituire una stringa in una serie di files… senza poter usare programmini che fanno ciò…
Allora il mitico Salvo mi ha illuminato: sed!
ecco la sintassi per dar ciò che vi ho detto:
for i in `<<espressione che restituisce i files da modificare>>’ ; do sed -i.bak -e ’s/<stringa_da_cercare>/<stringa_sostitutiva>/g’ $i; done
ed il gioco è fatto!!!
Analizziamo passo passo il comando:
<<espressione che restituisce i files da modificare>>
deve essere un comando bash (o qualcosa di simile) che restituisca una lista di files. Può essere un “ls“, oppure un “find” un “grep -Rl” etc etc..
do sed -i.bak -e
diciamo di usare il comando sed, che fa una marea di cose. vi rimando ad un bel “man sed” per scoprirle tutte!!!
In questo caso sto dicendo a sed di applicare le modifiche al file e di salvare una copia di backup del file aggiungendo il suffisso “.bak” (tramite lo switch -i.bak). Sto dicendo poi, con lo switch “-e” che ciò che troverà appresso è un’espressione che deve essere valutata.
’s/<stringa_da_cercare>/<stringa_sostitutiva>/g’
la “s” iniziale serve a dire che deve “ricercare” (“search”), poi abbiamo le stringhe, separate da “/” e alla fine il carattere “g” che serve per dire che deve fare il search&replace in maniera globale.
Spero che tutto ciò vi sia utile!
Alla prossima!
Popularity: 46% [?]










aw4y said,
Wrote on Giugno 19, 2008 @ 2:52 pm
oi…cercavo questa cosa in giro e dove finisco?
bella mbare!
RollsAppleTree said,
Wrote on Giugno 20, 2008 @ 1:37 pm
lol!!!
rox said,
Wrote on Febbraio 25, 2009 @ 9:50 am
Grande!mi hai risolto un rompicapo di nulla!E me l’hai anche spiegato!10 e lode!
RollsAppleTree said,
Wrote on Marzo 30, 2009 @ 5:02 pm