Comprobar si la cadena contiene una subcadena en Bash
-
Utilice la declaración condicional
case
(Método 1) -
Use comodines en la instrucción
if
(Método 2) -
Usa el Comando
grep
de Bash (Método 3) -
Use el operador Regex (
~=
) (Método 4)
Encontrar una subcadena a partir de una cadena es la operación más utilizada con cadenas. Hay muchas formas de realizar esta tarea.
En este artículo, veremos múltiples implementaciones basadas en scripts de Bash para encontrar si una cadena dada contiene una subcadena particular o no.
Utilice la declaración condicional case
(Método 1)
El case
es una declaración condicional en bash y se puede usar para implementar un bloque condicional en el script. Esta declaración se puede usar para encontrar una subcadena en bash.
Guion:
#!/bin/bash
str='This is a bash tutorial'
substr='bash'
case $str in
*"$substr"*)
echo "str contains the substr"
;;
esac
Tenemos 2 cadenas, str
y substr
. Hemos aplicado una sentencia case
para encontrar si str
contiene substr
o no.
Producción:
Use comodines en la instrucción if
(Método 2)
También podemos encontrar una subcadena de una cadena usando comodines en la instrucción if
. La forma más sencilla de encontrar una subcadena es colocar el asterisco comodín (*
) alrededor de la subcadena y compararla con la cadena real.
Guion:
#!/bin/bash
str='This is a bash tutorial'
substr='tutorial'
if [[ "$str" == *"$substr"* ]]; then
echo "String contains the sunstring"
else
echo "String does'nt contains the substring"
fi
Producción:
Usa el Comando grep
de Bash (Método 3)
El comando grep
también se usa para encontrar algo de un archivo o una cadena. Tiene una opción -q
, que le dice al comando grep
que no muestre la salida; devuelve true
o false
.
Guion:
#!/bin/bash
str='This is a bash tutorial'
substr='tutorial'
if grep -q "$substr" <<< "$str"; then
echo "String contains the substring"
fi
Producción:
Use el operador Regex (~=
) (Método 4)
Existe otro operador conocido como operador regex
(~=) con el que podemos comparar dos cadenas y si una cadena contiene una subcadena.
Guion:
#!/bin/bash
str='This is a bash tutorial'
substr='bash'
if [[ "$str" =~ .*"$substr".* ]]; then
echo "String contains the substring"
fi
Tenga en cuenta que en la declaración condicional, el operador regex convierte la cadena del lado derecho en una expresión regular y el símbolo .*
significa comparar 0 o más ocurrencias de una subcadena en la cadena.
Producción:
Por lo tanto, puede ver varias formas de encontrar una subcadena a partir de una cadena.
Husnain is a professional Software Engineer and a researcher who loves to learn, build, write, and teach. Having worked various jobs in the IT industry, he especially enjoys finding ways to express complex ideas in simple ways through his content. In his free time, Husnain unwinds by thinking about tech fiction to solve problems around him.
LinkedIn