Reemplazar caracteres en una cadena usando Bash

Faiq Bilal 20 junio 2023
  1. Método 1: utilice el comando tr
  2. Método 2: usar la expansión de parámetros de Bash
  3. Método 3: utilice el comando sed
Reemplazar caracteres en una cadena usando Bash

Una operación común que involucra literales de cadena es reemplazar caracteres individuales o subcadenas en esa cadena con otros caracteres o subcadenas.

En este artículo, veremos varios métodos de reemplazo de cadenas usando el shell BASH.

Método 1: utilice el comando tr

El tr es un comando Bash muy útil que se puede usar para realizar diferentes transformaciones en una cadena. Es particularmente útil en las transformaciones de cadenas (por ejemplo, cambiar el caso de la cadena a superior o inferior), eliminar repeticiones de subcadenas y buscar y reemplazar subcadenas.

Se utiliza para reemplazar caracteres y subcadenas en una cadena.

Sintaxis:

echo "$variableName" | tr [character(s)ToBeRemoved] [character(s)ToBeAdded]

Ejemplo de guión:

STR="ABCD"
echo "$STR" | tr A Z

Producción :

ZBCD

El carácter "A" en la variable de cadena $STR se sustituye por el carácter "Z". Es importante tener en cuenta que el comando anterior también funcionará para reemplazar todas las instancias del carácter "A".

Ejemplo de guión:

STR="ABACAD"
echo "$STR" | tr A Z

Producción :

ZBZCZD

Para casos de uso más complejos, como reemplazar un solo carácter con varios caracteres o reemplazar subcadenas con otras subcadenas, aún se puede usar el comando tr, pero sería necesario incorporar y usar expresiones regulares (RegEx) para lograr tal tareas.

Otra opción de comando útil con tr es la opción squeeze o -s, que puede reemplazar una secuencia de caracteres o una subcadena con un solo carácter.

Ejemplo de guión:

STR="ABBBCDDDDDE"
echo "$STR" | tr -s BD Z

Producción :

AZCZE

Como puede verse, varias apariciones adyacentes de los caracteres “B” y “D” fueron reemplazadas por una sola “Z”.

Método 2: usar la expansión de parámetros de Bash

El símbolo $ suele ir precedido de un nombre de variable para asignar un valor a la variable o para imprimir su contenido. Sin embargo, también podemos usarlo para la expansión de parámetros.

Podemos usar una expansión de parámetros para reemplazar el contenido de una variable con una subcadena dada de la siguiente manera.

Sintaxis:

${varName/substring/replacement}

Tenga en cuenta que el uso de llaves es opcional con la expansión variable.

Ejemplo de guión:

STR="I LIKE FOOTBALL"
echo ${STR/FOOTBALL/CRICKET}

Producción :

I LIKE CRICKET

Tenga en cuenta que el uso de una sola barra diagonal después del nombre de la variable en el comando de expansión de parámetros reemplaza la primera aparición de la subcadena solamente. Utilice la siguiente secuencia de comandos para reemplazar todas las apariciones de una subcadena en una cadena o barras diagonales dobles.

Ejemplo de guión:

${varName//substring/replacement}

Método 3: utilice el comando sed

El comando sed es similar al comando tr. Aún así, es más poderoso ya que puede usarse para editar archivos de texto directamente sin abrirlos. El comando sed en BASH significa editor de secuencias. Realiza muchas funciones en archivos como buscar, encontrar y reemplazar, e insertar o eliminar.

El comando sed se puede usar para el reemplazo de cadenas de la siguiente manera.

Ejemplo de guión:

STR=AZC
echo "$STR" | sed -r 's/[Z]+/B/g'

Producción :

ABC

Esto es similar a usar el comando tr. La opción -r después del comando sed indica reemplazo, y la coincidencia de patrones (RegEx) describe con qué encontrarlo y reemplazarlo.

Tenga en cuenta que la sintaxis del comando sed varía ligeramente entre las versiones de bash en diferentes sistemas, lo que puede causar un comportamiento imprevisto.

Artículo relacionado - Bash String