26 diciembre, 2007
13 Comments
Si buscaban como reemplazar texto dentro de varios archivos en una sola linea de comando, han llegado al lugar correcto. Muchas veces tenemos que buscar o hacer cambios a un texto determinado y para empezar no sabemos ni en cual archivo, documento o directorio puede estar.
Digamos que le cambiamos direccion IP al servidor, y es necesario hacer los cambios en todos los archivos de configuracion y logs donde aparezca la IP anterior.
Para no estar buscando durante horas entre todos los archivos de nuestro servidor, les paso estos tips para reemplazar strings alfanumericos en linux.
- Para reemplazar un texto o string cada vez que aparezca en los archivos:
- Para reemplazar la primera vez que aparezca el texto:
- Para reemplazar todos los archivos dentro de un directorio:
deathbian:~# find /path/directorio "*.txt" | xargs perl -pi -e 's/texto/reemplazo/g'
deathbian:~# find /path/directorio "*.txt" | xargs perl -pi -e 's/texto/reemplazo/'
deathbian:~# for arg in `ls -C1`; do perl -pi -e 's/texto/reemplazo/g'; done;
Existe infinidad de combinaciones posibles utilizando el shell de la linea de comandos. Tomemos como ejemplo la primera busqueda:
deathbian:~# for arg in `find /your/home/dir -name "*.txt"` ; do perl -pi -e
's/texto/reemplazo/g' $arg; done;
Gracias por el post. Por si a alguien le interesa, algunos ejemplos mas para hacer el “buscar-reemplazar” con sed: http://www.sysadmit.com/2015/07/linux-reemplazar-texto-en-archivos-con-sed.html
Hola.
Tengo una inquietud adicional:
La cadena que debo reemplazar está dentro de dos posiciones especÃficas. Si la encuentra en otra posición no debe reemplazar.
¿Qué se debe hacer?
Mil gracias
He tratado de usar esto en linux pero me dice que los archivos no son regulares? Que puede ser? Grácias
Quizas sean archivos binarios, no de texto?
Muchas gracias!!!!, me sirvio mucho para resolver un gran problema que tenia, ya que debÃa realizar un reemplazo de mas de 25 mil archivo y funciono sin ningun problema.
Saludos y gracias nuevamente
¡¡¡ Genial !!! Me ha venido de perlas.
aca les dejo uno que encontrre reemplaza lineas de texto masivamente en muchas clases de archivoo para xp TexFinderX 2.14 for Windows XP and Vista
como los utilizo en donde los tengo que poner expliken un poco
deben saber escribir y explicar lo que eñl explorador pregunta
perl -pi.bak -e “s/favicon.ico/fernando.ico/g;” configuration.php busca en el archivo configuration.php y reemplaza favicon.ico con fernando.ico
Para reemplazar direcciones de correo en la configuracion de exim utilizo;
find /etc/exim/* | xargs perl -pi -e ‘s/usuario\@dominio.com//g’
y con eso puedo borrar la direccion de usuario en N documentos.
hace dos dias estoy buscando algo que me permita hacer esto, mil gracias 😀
Que buena ayuda !!!, en verdad que da gusto saber que hay gente profesional dedicada a colaborar con los demas. Muchas gracias por el aporte. (b):D(ci)