Search and replace in file
In un progetto recente mi è capitato di dover modificare al volo uno stesso parametro in molteplici file di configurazione.
Più in dettaglio, avrei dovuto modificare il valore dell’elemento <data>.
La soluzione si basa su una serie di istruzioni bash.
# si ottiene il numero di occorrenze da sostituire
$ grep -r '4010' /path/file/configurazione | wc -l
# le occorrenze vengono sostituite
$ find . -maxdepth 1 -name "param*.xml" -exec sed -i 's/4010/3010/g' {} \;
# si verifica che le occorrenze sostituite siano uguali a quelle trovate nella situazione iniziale
$ grep -r '3010' . | wc -l
Più in dettaglio, ecco la successione di operazioni che ho eseguito.
# listing file nel path
~/tmp/param$ ls
param1.xml
param2.xml
param3.xml
...
# search: quante volte occorre la stringa da sostituire?
~/tmp/param$ grep -r '4010' . | wc -l
10
# search: in quali file occorre la stringa da sostituire?
~/tmp/param$ grep -r '4010' .
./param1.xml: <data>40100328000000</data>
./param2.xml: <data>40100328000000</data>
./param3.xml: <data>40100328000000</data>
...
# il find e' corretto?
~/tmp/param$ find . -maxdepth 1 -name "param*.xml"
./param1.xml
./param2.xml
./param3.xml
...
# search/replace
~/tmp/param$ find . -maxdepth 1 -name "param*.xml" -exec sed -i 's/4010/3010/g' {} \;
# verifica: replace quante volte?
~/tmp/param$ grep -r '3010' . | wc -l
10
# verifica: replace in quali file?
~/tmp/param$ grep -r '3010' .
./param1.xml: <data>30100328000000</data>
./param2.xml: <data>30100328000000</data>
./param3.xml: <data>30100328000000</data>
...
No TweetBacks yet. (Be the first to Tweet this post)
-
Categories
-
Articles
- September 2011
- August 2011
- July 2011
- June 2011
- May 2011
- April 2011
- March 2011
- February 2011
- January 2011
- December 2010
- November 2010
- October 2010
- September 2010
- August 2010
- July 2010
- June 2010
- May 2010
- April 2010
- March 2010
- February 2010
- January 2010
- December 2009
- November 2009
- September 2009
- June 2009
- May 2009
- March 2009
- February 2009
- January 2009
- December 2008
- October 2008
- September 2008
- August 2008
- July 2008
- June 2008
- May 2008
- April 2008
- March 2008
- February 2008
- January 2008
- December 2007
- November 2007
- October 2007
- September 2007
- August 2007
- July 2007
- June 2007
- May 2007
- April 2007
- March 2007
- February 2007
-
Meta




