Técnicas de manipulación de cadenas

ShellBeginner
Practicar Ahora

Introducción

Al escribir scripts, a menudo necesita modificar texto almacenado en variables. Es posible que deba extraer una parte específica de una ruta de archivo, reemplazar una palabra en un ajuste de configuración o asegurarse de que una variable tenga un valor válido aunque el usuario no lo haya proporcionado.

Bash ofrece herramientas integradas muy potentes para estas tareas, conocidas como expansión de parámetros.

Este es un concepto importante de la shell porque permite transformar texto sin ejecutar comandos adicionales. En los scripts de shell, utilizar funciones integradas suele ser más rápido y sencillo que llamar a utilidades externas para cada pequeño cambio.

En este laboratorio, aprenderá tres técnicas esenciales para manipular cadenas:

  1. Extracción: extraer una parte específica de una cadena, como los primeros 5 caracteres.
  2. Reemplazo: buscar y reemplazar texto dentro de una cadena.
  3. Valores predeterminados: asignar automáticamente un valor alternativo si una variable no existe o está vacía.

Defina una variable de cadena

Comience creando una variable que contenga una ruta de archivo larga. Utilizará esta cadena para practicar las técnicas de manipulación.

La gestión de cadenas aparece constantemente al trabajar con la shell, porque gran parte de la información del sistema se representa como texto: rutas, nombres de usuario, nombres de host, valores de configuración y resultados de comandos. Aprender a transformar texto sin salir de la shell mejora considerablemente la productividad.

Cree un script nuevo llamado string_lab.sh.

Abra string_lab.sh y añada el código siguiente:

nano string_lab.sh
#!/bin/bash

## Define a variable with a file path
FILE_PATH="/usr/local/share/applications/config.xml"

echo "Original Path: $FILE_PATH"

Guarde el archivo (Ctrl+O, Enter) y salga (Ctrl+X).

Convierta el script en ejecutable y ejecútelo para preparar el entorno:

chmod +x string_lab.sh
./string_lab.sh

Debería ver la ruta completa impresa en la terminal. Ahora empezará a manipular esta cadena.

Extraiga una subcadena (extracción)

A veces solo necesita una parte específica de una cadena, como los primeros caracteres. Esto se denomina extracción.

La sintaxis es: ${Variable:Offset:Length}

  • Offset: posición desde la que se empieza (0 es el primer carácter).
  • Length: cantidad de caracteres que se deben extraer.

Esta operación utiliza la expansión de parámetros, lo que significa que Bash transforma internamente el valor de la variable antes de ejecutar el comando. No necesita una utilidad adicional como cut para realizar una operación sencilla de extracción de subcadenas.

Extraerá los primeros 5 caracteres (/usr/) de FILE_PATH.

Abra string_lab.sh:

nano string_lab.sh

Añada el código siguiente al final del archivo:

## Slicing: Start at index 0, take 5 characters
## Syntax: ${Variable : Start : Length}
SLICE=${FILE_PATH:0:5}

echo "First 5 characters: $SLICE"

Guarde el archivo y salga. Ejecútelo:

./string_lab.sh

Resultado:

First 5 characters: /usr/

Bash extrajo exactamente 5 caracteres empezando desde el principio de la cadena.

Reemplace una subcadena

Esta técnica funciona como la opción «Buscar y reemplazar» de un editor de texto.

La sintaxis es: ${Variable/Find/Replace}.

Suponga que desea cambiar la carpeta share por bin en la ruta del archivo.

Abra string_lab.sh:

nano string_lab.sh

Añada este código:

## Replacement: Find 'share', replace with 'bin'
## Syntax: ${Variable / Pattern / Replacement}
NEW_PATH=${FILE_PATH/share/bin}

echo "Modified Path: $NEW_PATH"

Guarde el archivo y salga. Ejecútelo:

./string_lab.sh

Resultado:

Modified Path: /usr/local/bin/applications/config.xml

La shell encontró la primera aparición de share y la reemplazó por bin.

Esta técnica resulta útil para manipular rutas, limpiar nombres de archivo y realizar cambios rápidos en la configuración. Como la operación se ejecuta dentro del propio Bash, normalmente es más ligera y fácil de leer que iniciar un comando independiente de procesamiento de texto para hacer una sustitución sencilla.

Proporcione un valor predeterminado

Los scripts suelen depender de entradas o variables de entorno, como USER o HOME. Si estas variables no existen, el script podría fallar o comportarse de forma impredecible.

Puede proporcionar un valor predeterminado que se utilice cuando la variable no esté definida o esté vacía.

La sintaxis es: ${Variable:-DefaultValue}.

Abra string_lab.sh:

nano string_lab.sh

Añada este código. Observe que USER_NAME no se ha definido en el script, por lo que actualmente no existe:

## Default Value: If USER_NAME is missing, use 'guest'
## Syntax: ${Variable :- Default}
CURRENT_USER=${USER_NAME:-guest}

echo "Current User: $CURRENT_USER"

Guarde el archivo y salga. Ejecútelo:

./string_lab.sh

Resultado:

Current User: guest

Como USER_NAME no estaba definida, Bash gestionó la ausencia de datos utilizando el valor alternativo guest. De este modo, el script puede continuar ejecutándose correctamente.

Este patrón resulta especialmente útil en la automatización, donde la entrada puede proceder de variables de entorno o de argumentos opcionales. Un valor predeterminado adecuado puede hacer que un script sea más seguro y predecible cuando faltan algunos datos.

Resumen

En este laboratorio, aprendió a manipular cadenas directamente en Bash mediante la expansión de parámetros:

  1. Extracción (${var:offset:length}): extraer subcadenas precisas.
  2. Reemplazo (${var/old/new}): modificar el contenido de una variable.
  3. Valores predeterminados (${var:-default}): gestionar correctamente las variables que faltan.

Estas técnicas permiten escribir scripts sólidos que procesan texto de forma eficiente sin necesitar herramientas externas como sed o awk para tareas sencillas.