Reemplazo de cadena en Bash | FOSS Linux
Bash es un proceso de comando compatible con el shell de UNIX cuya tarea principal es manipular cadenas realizadas en un entorno de shell. En ocasiones, 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 cuando se reemplaza 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
Cuando se realizan 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" # Replace .gif with .mp4 generated_file_name=${file_name/.gif/.$new_extension} echo generated_file_name
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/' filename sed – is the command used in the execution of the above syntax ‘-i’ – used in the modification of contents in the original file with a replacement string aid whenever the search value exists in the file. ‘s’ – this is the substitute command ‘search_string’ – this represents the string value that is to be searched for replacement in the original file ‘replace_string’ – this represents the string value that is used to replace the searched value. The string should match the string found by the ‘search_string’ command. ‘filename’ – this is the filename whereby the replacement will be applied.
Ejecute el siguiente comando en su terminal:
sed 's/site/website/g' singleboardbytes.txt > fosslinux.txt
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
En la siguiente figura, puede ver un signo de exclamación que dice: El archivo "/home/tuts/singleboardbytes.txt cambió en el disco". esto muestra que los cambios se han realizado correctamente.
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) como en la palabra sitio ha sido cambiado a sitio web.
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() { local search=$1 local replace=$2 # Note the double quotes sed -i "s/${search}/${replace}/g" singleboardbytes.txt }
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, al reemplazar el contenido del archivo usando FreeBSD, se debe realizar una copia de seguridad usando la 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() { local search=$1 local replace=$2 sed -i "" "s/${search}/${replace}/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 ...": extra characters at the end of h command
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 # Check the command line argument value exists or not if [ $1 != "" ]; then # Search all string containing digits and add $ 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, lo que no es el caso del comando awk.
#!/bin/bash # Check the command line argument value exists or not if [ $1 != "" ]; then # Search all string based on date 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 de ortografía que puedan 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.
Deja una respuesta