Cómo usar el comando SED para reemplazar la cadena en archivos

Cómo usar el comando SED para reemplazar la cadena en archivos

¿Alguna vez tiene una situación en la que necesita reemplazar una palabra o oración en muchos archivos?? Puede copiarlo y pegarlo, o tal vez hay un script existente que puede hacer el trabajo. Pero, ¿qué tal si solo necesita reemplazarlo con otra palabra o oración en otro lugar? Podría usar Find, pero eso sería demasiado genérico y requeriría escribir un script para esta tarea. ¿Y qué pasa si ni siquiera sabe qué palabra o oración debe encontrar y reemplazar?? ¿Qué tal usar SED entonces?? Si no está familiarizado con la línea de comandos de Unix, SED es un editor de transmisión. Es un editor de texto simple que lee de la entrada estándar y realiza operaciones de edición en la transmisión mientras se lee. Se usa comúnmente para buscar y reemplazar la funcionalidad en scripts.

En este artículo, le mostraremos algunos ejemplos de cómo usar SED para realizar la búsqueda y reemplazar el texto en los archivos.

Buscar y reemplazar la cadena en archivos

Si solo necesita realizar una búsqueda y reemplazo simples, puede usar la siguiente sintaxis:

sed -i 's/string_to_find/string_to_replace/' file1 filen2 filen 

Aquí:

  • -i: Este indicador indica a SED que se espera que su archivo de entrada sea uno de los archivos especificados después del comando.
  • string_to_find: Esta es la cadena que desea buscar en los archivos.
  • string_to_replace: Esta es la cadena que desea reemplazar la cadena what_to_find dentro de los archivos.
  • file2 filen2 filen: Esta es la lista de archivos que SED buscará y reemplazará.

El siguiente comando buscará todas las cadenas "hola" en el bienvenido.TXT archivo. Luego reemplácelo con una nueva cadena "Howdy" en el mismo archivo.

Sed -i 's/hello/howdy/g' bienvenido.TXT  

También puede crear una copia de seguridad del archivo original antes de hacer cambios con -i seguido de alguna extensión. Por ejemplo:

sed -i.Backup 'S/Hello/Howdy/G' Bienvenido.TXT  

Esto creará un archivo bienvenido.TXT.Copia de seguridad en el directorio actual con el contenido del archivo original.

Reemplazar recursivamente el texto en varios archivos

El siguiente comando es útil para reemplazar las cadenas en múltiples archivos a la vez en un directorio /opt /docs. Aquí encontrará a todos los archivos en el directorio definido y ejecutará el comando SED uno por uno.

find/opt/docs/-type f -exec sed -i 's/hello/howdy/g' ;  

Reemplace el texto sin afectar el archivo original

Si no desea realizar cambios en su archivo original y crear nuevos archivos con cadenas cambiadas, use el siguiente comando.

sed 's/hello/howdy/g' bienvenido.txt> Bienvenido_2.TXT  

Este comando creará un nuevo archivo Bienvenido_2.TXT con texto modificado. El archivo original con permanecer sin cambios.

Conclusión

Un comando SED es una herramienta poderosa que se puede usar para editar el texto en los archivos. Es útil cuando tiene una situación en la que necesita encontrar y reemplazar una cadena en muchos archivos. Podrías usar Find, pero eso sería demasiado genérico y requeriría escribir un script. ¿Y qué pasa si ni siquiera sabe qué palabra o oración debe encontrar y reemplazar?? Usar SED es una mejor solución.