Aprenda Linux

Reemplazo de cadena en Bash

Reemplazo de cadena en Bash

Bash es un proceso de comando compatible con shell de UNIX cuya tarea principal es manipular cadenas realizadas en un entorno de shell. A veces se pide a los programadores que trabajen en diferentes archivos. Pueden agregar, eliminar y reemplazar partes o todo el archivo para que se adapte a su trabajo. Esto requiere el conocimiento de reemplazar cadenas en bash. El almacenamiento de datos puede ser temporal o permanente, según la naturaleza de los datos. La cadena de archivo es esencial al reemplazar el contenido del archivo.

Reemplazo de cadena en Bash

sed es vital y es útil para ayudar a reemplazar cadenas en un archivo con scripts bash. El editor de cadenas se puede utilizar de diferentes formas para reemplazar el contenido del archivo en bash. Un editor de cadenas alternativo pero de sonido es awk, que se puede poner en juego al reemplazar el valor de la cadena de un archivo usando bash. Este artículo mostrará con la ayuda de ejemplos cómo se puede reemplazar el contenido del archivo en bash. Tenga en cuenta que el conocimiento de los patrones de expresiones regulares también puede ser de gran valor al reemplazar cadenas en bash.

Manipulación Bash String

Al hacer reemplazos menores o simples, no se requiere sed. Bash puede hacer la manipulación.

Por ejemplo:
Al reemplazar un fosslinux.gif con .mp4, sed no es necesario.
Para ejecutar el proceso usando bash, use el texto codificado a continuación:

# / bin / bash file_name = "fosslinux.gif "new_extension =" mp4 "# Reemplazar .gif con .mp4 nombre_archivo_generado = $ nombre_archivo /.gif /.$ new_extension echo nombre_archivo_generado

Reemplazo de cadena usando sed

sed puede denominarse editor de flujo. Sed puede reemplazar una cadena en archivos. Veamos un ejemplo de un archivo llamado singleboardbytes.txt que tiene la siguiente información:
Foss Linux es un excelente sitio de aprendizaje para cualquier usuario de Linux. Consulte los artículos publicados por Foss Linux en su sitio.

Ahora, de nuestro archivo, debemos reemplazar la palabra "sitio" con "sitio web”Y cambie el nombre del archivo a Fosslinux.TXT.

Entendiendo la sintaxis sed

sed -i 's / search_string / replace_string /' nombre de archivo sed - es el comando utilizado en la ejecución de la sintaxis anterior '-I'- utilizado en la modificación de contenidos en el archivo original con una ayuda de cadena de reemplazo siempre que el valor de búsqueda exista en el archivo. 's'- este es el comando sustituto'cadena de búsqueda'- esto representa el valor de cadena que se buscará para reemplazo en el archivo original'reemplazar_cadena': esto representa el valor de cadena que se usa para reemplazar el valor buscado. La cadena debe coincidir con la cadena encontrada por el comando 'search_string'. 'Nombre del archivo'- este es el nombre de archivo por el cual se aplicará el reemplazo.

Ejecute el siguiente comando en su terminal:

sed 's / site / website / g' singleboardbytes.txt> fosslinux.TXT

Reemplazo de cuerdas usando sed

Nota: también puede ejecutar el comando anterior colocándolo como un script bash.
Reemplazo usando el -I mando

Después de ejecutar el comando, el siguiente paso es reemplazar usando el -I mando. -I es una representación de "en el lugar", lo que significa que el archivo solo se reemplaza y no hay creación de archivos adicionales. Usando nuestro ejemplo anterior, ejecute el siguiente comando:

sed -i 's / site / website / g' singleboardbytes.TXT

Reemplazo usando el comando -i

En la figura siguiente, puede ver un signo de exclamación que dice: El archivo “/ home / tuts / singleboardbytes.txt cambiado en el disco."Esto muestra que los cambios se han realizado correctamente.

Cambios realizados en singleboardbytes.TXT

La siguiente figura es el archivo que contiene los cambios realizados en el paso anterior, tanto en el nombre del archivo (singleboardbytes.txt a fosslinux.txt) y la palabra sitio ha sido cambiado a sitio web.

Cambio final después de ejecutar el comando sed

Usar una variable como valores de búsqueda y reemplazos

Con un poco de interpolación, las variables se pueden usar para reemplazar cadenas. El primer argumento sed, en este caso, debe usar comillas dobles en lugar de comillas simples. Por ejemplo, su código será similar al siguiente:

tuts () búsqueda local = $ 1 reemplazo local = $ 2 # Tenga en cuenta las comillas dobles sed -i "s / $ búsqueda / $ reemplazo / g" singleboardbytes.TXT 

Usar una variable como valores de búsqueda y reemplazos

sed tiene dos sabores, a saber: el FreeBSD y el Sed de Linux. Las distribuciones de Linux usan el sed de Linux mientras que los usuarios de OS X usan el sed de FreeBSD. Estos sabores son bastante diferentes y, por lo tanto, no se pueden transferir comandos de un sabor sed a otro.

Por ejemplo, mientras se reemplaza el contenido del archivo usando FreeBSD, se debe realizar una copia de seguridad usando el .extensión bak. O puede iniciar una copia de seguridad con el uso de pares vacíos de comillas inmediatamente después de la notación -i como se muestra en la sintaxis de bash a continuación:

tuts () búsqueda local = $ 1 reemplazo local = $ 2 sed -i "" "s / $ búsqueda / $ reemplazo / g" singleboardbytes.TXT 

Si no se realiza una copia de seguridad mientras usa FreeBSD como se ilustra en el código de sintaxis anterior, caerá en un error como el que se muestra a continuación:

sed: 1: "/ Users / user / path / tuts…": caracteres adicionales al final del comando h

Cómo reemplazar un archivo y hacer coincidir el patrón de dígitos usando el comando sed

Si ejecuta correctamente el script, se realizará una búsqueda de todo el contenido numérico presente en un archivo. Luego, el contenido se reemplazará agregando $ antes de los números.

#!/ bin / bash # Comprueba que el valor del argumento de la línea de comando existe o no si [$ 1 != ""]; luego # Busque todas las cadenas que contengan dígitos y agregue $ sed -i 's / \ b [0-9] \ 5 \ \ b / $ & / g' $ 1 fi

Reemplazo de una cadena usando el comando awk

En este caso, usaremos el comando awk en lugar del comando sed para reemplazar el contenido de un archivo. La diferencia entre estos comandos es que el comando sed actualiza directamente el archivo original, que no es el caso con el comando awk.

#!/ bin / bash # Comprueba que el valor del argumento de la línea de comando existe o no si [$ 1 != ""]; luego # Buscar todas las cadenas según la fecha awk 'sub ("02/06/2020", "12/06/2020") 1' $ 1> temp.txt && mv temp.txt $ 1 fi

Conclusión

Los ejemplos anteriores son vitales para su progreso en el aprendizaje de cómo reemplazar una cadena en Bash. Por lo tanto, para ser bueno en eso, tendrás que practicar con regularidad. Buscar y reemplazar cadenas en un archivo puede parecer complejo, pero lo encontrará mucho más manejable si sigue nuestras pautas correctamente.

Un punto a tener en cuenta es que ejecutar los comandos a veces puede parecer más manejable, pero debe tener cuidado de no causar estragos en sed. Cuando ingresa los comandos incorrectos, romperá su computadora, causando más problemas como la pérdida de datos. Por lo tanto, para estar seguro, siempre copie y pegue el código tal como está en su terminal. Esto evitará errores ortográficos que podrían dañar su máquina. Esperamos que este artículo le haya ayudado a aprender cómo reemplazar una cadena en bash usando este artículo.

Los mejores emuladores de consola de juegos para Linux
Este artículo enumerará el software de emulación de consola de juegos más popular disponible para Linux. La emulación es una capa de compatibilidad de...
Las mejores distribuciones de Linux para juegos en 2021
El sistema operativo Linux ha recorrido un largo camino desde su apariencia original, simple y basada en servidor. Este sistema operativo ha mejorado ...
Cómo capturar y transmitir su sesión de juego en Linux
En el pasado, los juegos solo se consideraban un pasatiempo, pero con el tiempo la industria del juego experimentó un gran crecimiento en términos de ...