Una de las operaciones más comunes cuando se trabaja con cadenas en Bash es determinar si una cadena contiene o no otra cadena.
En este artículo, le mostraremos varias formas de comprobar si una cadena contiene una subcadena.
Uso de comodines #
El enfoque más sencillo es rodear la subcadena con símbolos comodín de asterisco (asterisco) *
y compararlo con la cadena. El comodín es un símbolo que se utiliza para representar cero, uno o más caracteres.
Si la prueba devuelve true
, la subcadena está contenida en la cadena.
En el siguiente ejemplo, estamos usando la sentencia if y el operador de igualdad (==
) para comprobar si la subcadena SUB
se encuentra dentro de la cadena STR
:
#!/bin/bash
STR='GNU/Linux is an operating system'
SUB='Linux'
if [[ "$STR" == *"$SUB"* ]]; then
echo "It's there."
fi
Cuando se ejecuta, el script generará:
It's there.
Usando el operador de casos #
En lugar de usar la declaración if, también puede usar la declaración case para verificar si una cadena incluye o no otra cadena.
#!/bin/bash
STR='GNU/Linux is an operating system'
SUB='Linux'
case $STR in
*"$SUB"*)
echo -n "It's there."
;;
esac
Uso del operador Regex #
Otra opción para determinar si una subcadena específica ocurre dentro de una cadena es usar el operador regex =~
. Cuando se usa este operador, la cadena correcta se considera una expresión regular.
El punto seguido de un asterisco .*
coincide con cero o más ocurrencias de cualquier carácter excepto un carácter de nueva línea.
#!/bin/bash
STR='GNU/Linux is an operating system'
SUB='Linux'
if [[ "$STR" =~ .*"$SUB".* ]]; then
echo "It's there."
fi
El script hará eco de lo siguiente:
It's there.
Usando Grep #
El comando grep también se puede usar para buscar cadenas en otra cadena.
En el siguiente ejemplo, estamos pasando la cadena $STR
como entrada para grep y verificando si la cadena $SUB
se encuentra dentro de la cadena de entrada. El comando devolverá true
o false
según corresponda.
#!/bin/bash
STR='GNU/Linux is an operating system'
SUB='Linux'
if grep -q "$SUB" <<< "$STR"; then
echo "It's there"
fi
El -q
La opción le dice a grep que se calle, que omita la salida.
Conclusión #
Comprobar si una cadena contiene una subcadena es una de las operaciones más básicas y de uso frecuente en las secuencias de comandos de Bash.
Después de leer este tutorial, debe comprender bien cómo probar si una cadena incluye otra cadena. También puede usar otros comandos como awk
o sed
para probar.
Si tiene alguna pregunta o comentario, no dude en dejar un comentario.