GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo verificar si una cadena contiene una subcadena en Bash

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.


Linux
  1. ¿Cómo verificar si Bash tiene una vulnerabilidad de Shellshock?

  2. ¿Cómo verificar la subcadena en Shell Script Bash?

  3. ¿Cómo leer una cadena como número hexadecimal en Bash?

  4. Cómo dividir una cadena en Bash Script

  5. ¿Cómo funciona cat << EOF en bash?

Cómo verificar si existe un archivo o directorio en Bash

Cómo verificar si existe un archivo o directorio en Bash

Cómo verificar si existe un archivo o directorio en Bash Shell

Comprobar si la cadena contiene una subcadena en Python

Cómo comprobar si la cadena contiene una subcadena en Bash

¿Cómo verifico la sintaxis de un script Bash sin ejecutarlo?