Utilizar editor nano desde bash para buscar y reemplazar un texto
La primera opción es utilizar un editor de texto cualquiera para hacer un buscar y reemplazar, yo utilizo nano por lo fácil y rápido que es. Te permite abrir fichero de texto muy pesados sin cargar demasiado tu equipo.Una vez estas en nano simplemente presionas la combinación de teclas ctrl + w para buscar y después ctrl + r para reemplazar, esto te pedirá primero el texto a buscar, después el texto a reemplazar y para terminar preguntará si quieres reemplazar todas las coincidencias o únicamente la primera.
Una buena opción; crear un script /bin/bash para buscar y reemplazar un texto
Esta opción es muy útil cuando necesitamos hacer un buscar y reemplazar automatizado por ejemplo en un fichero de configuración. Yo lo utilizo en ficheros de configuración de apache para virtualhost, tengo una plantilla y cuando tengo que crear un nuevo virtualhost lo creo con un script automatizado de este estilo.#!/bin/bashEste script buscará en la cadena base "Amo con locura a mi hijo y a mi mujer." el texto "hijo y a mi mujer" y lo reemplazará por "familia", para después imprimir el resultado "Amo con locura a mi familia".
primeraCadena="Amo con locura a mi hijo y a mi mujer."
segundaCadena="familia"
echo "${primeraCadena/hijo y a mi mujer/$segundaCadena}"
Esto puede ser útil pero cuando queremos hacer un buscar reemplazar en un fichero de configuración normalmente tenemos el mismo nombre en muchos sitios que tenemos que reemplazar (ficheros de configuración, ruta de directorios, nombre de dominios...). Para esto dejo aquí este pequeños script:
#!/bin/bashEn primer lugar cargamos el fichero apache.conf en una variable, hay que destacar que las comillas utilizas son las comillas de ejecución y no las comillas de cadena de texto.
apache=`cat apache.conf`
echo "${apache//instancia/$1}"
Después procedemos a reemplazar todas las palabras "instancia" por el primer parámetro que le pasamos en la ejecución del fichero.
El script tendríamos que ejecutarlo de la siguiente forma:
./buscar_reemplazar.bash nuevaInstanciaSu ejecución nos devolverá el contenido del fichero que necesitaremos para apache reemplazando la palabra "instancia" del fichero plantilla por "nuevaInstancia".
La opción más rápida; utiliza el comando sed para buscar y reemplazar textos
El comando sed es ampliamente utilizado en linux y lo puedes utilizar para escribir de forma sencilla y rápida una linea de comando para hacer un buscar y reemplazar en un fichero de texto.sed -i 's/antigua/nueva/g' prueba.txtDirectamente con este simple comando buscará en el fichero prueba.txt todas las coincidencias con "antigua" y las reemplazará por "nueva". El resultado quedará guardado en el mismo fichero gracias al modificador " -i ".
Si prescindimos de este modificador obtendremos el resultado por la salida estandar de la consola. Y podemos desviar éste resultado a un fichero.
sed 's/antigua/nueva/g' prueba.txt > resultado.txt
No hay comentarios:
Publicar un comentario