Cómo usar el comando SED para reemplazar la cadena en archivos
- 3880
- 171
- Adriana Tórrez
¿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.
- « Cómo cambiar la raíz del documento del dominio primario en WHM/CPANEL
- Cómo configurar los privilegios de sudo para el usuario en Linux »