Comprobar si la cadena contiene una subcadena en Bash

Muhammad Husnain 30 enero 2023
  1. Utilice la declaración condicional case (Método 1)
  2. Use comodines en la instrucción if (Método 2)
  3. Usa el Comando grep de Bash (Método 3)
  4. Use el operador Regex (~=) (Método 4)
Comprobar si la cadena contiene una subcadena en Bash

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:

Declaración condicional de caso de uso

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:

Usar comodines en la instrucción if

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:

Utilice el comando grep de Bash

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:

Usar operador Regex

Por lo tanto, puede ver varias formas de encontrar una subcadena a partir de una cadena.

Muhammad Husnain avatar Muhammad Husnain avatar

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

Artículo relacionado - Bash Substring