Reemplazar texto en varios archivos bajo Linux
Hay varias formas de reemplazar un texto en varios archivos (usando perl, un for con vim, etc.), pero con sed, todo es más facil.
Si deseamos reemplazar el string manzana por pera a todos los archivos de un directorio, deberiamos ejecutar:
sed -i 's/manzana/pera/g' *
Sencillo? además que utiliza la misma sintaxis de vim =)
Y si queremos hacer el reemplazo de forma recursiva, lo podemos hacer realizando una busqueda previa con find (Reemplazar gato por kitty):
find . -type f -print0 | xargs -0 sed -i 's/gato/kitty/g'
O de forma más acotada, buscando con grep las coincidencias y sobre ellas el reemplazo:
grep -l -R "gato" * | xargs sed -i 's/gato/kitty/g'
Gracias por el post. Por si a alguien le interesa, algunos ejmplos mas para hacer el “buscar-reemplazar” con sed: http://www.sysadmit.com/2015/07/linux-reemplazar-texto-en-archivos-con-sed.html<