GNU/Linux >> Tutoriales Linux >  >> Linux

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

Entonces, tiene una cadena larga y desea verificar que esta cadena contenga una subcadena en su secuencia de comandos bash.

Hay más de una forma de buscar subcadenas en bash shell. Primero mostraré algunos ejemplos simples, seguidos de un script bash genial que usa este concepto en un escenario del mundo real.

Comprobando la subcadena en bash usando la declaración if else

Si está familiarizado con las declaraciones condicionales en bash, puede usarlas para verificar si una cadena contiene la subcadena de la siguiente manera:

if [[ $fullstring == *"$substr"* ]];

Ejemplo simple para verificar la subcadena

Los corchetes dobles son necesarios aquí. Considero que esta es la forma nativa porque no utiliza ninguna otra herramienta. Permítanme explicar el fragmento anterior con un ejemplo adecuado.

Inicialice una variable con una cadena larga:

[email protected]:~$ fullstring="This is a string with a stretch"

Ahora, guarde la palabra "estirar" dentro de una variable llamada substr1 :

[email protected]:~$ substr="stretch"

Hagamos la comparación de subcadenas:

[email protected]:~$ if [[ $fullstring == *"$substr"* ]]; then

Aquí, * significa cero o más caracteres. Espero que esté familiarizado con el concepto de comillas en bash scripting. El $substr dentro de las comillas lo reemplaza con su valor.

Básicamente, está comprobando si la cadena completa coincide con el tipo de patrón xxxxsubstrxxxx.

También podría usar la subcadena directamente en lugar de usarla a través de una variable como esta:

[email protected]:~$ if [[ $fullstring == *"stretch"* ]]; then

Entiendes la esencia. Permítanme completar este script con otra declaración que muestre un mensaje alternativo si no se encuentra la subcadena:

#!/bin/bash

fullstring="This is a string with a stretch"
substr="stretch"

if [[ $fullstring == *"$substr"* ]]; then
        echo "Found $substr!"
else
        echo "$substr not found!"
fi

Puede ver fácilmente que si ejecuta el script de shell anterior, encontrará la subcadena.

[email protected]:~$ bash substr.sh
Found stretch!

Un mejor ejemplo del mundo real para encontrar subcadenas en bash

Las subcadenas pueden ser muy útiles en los scripts para “interactuar” con los usuarios. Use el comando de lectura para permitir que su script bash acepte la entrada del usuario.

echo "Hey there..what is your name?"
read Name
echo "Hello "$name"! The Matrix Resurrections trailer is here! Is your pill Red or Blue?"
read Pill
if [[ $Pill == *"Red"* || $Pill == *"red"* ]]; then
  echo "Welcome..to the real world "$Name"!"
else
  echo "Wake Up "$Name"!"
fi

Dale permiso de ejecución y ejecuta el script:

[email protected]:~$ chmod +x makeyourchoice.sh
[email protected]:~$ ./makeyourchoice.sh

Salida para el script anterior:

Hey there..what is your name?
avimanyu
Hello avimanyu! The Matrix Resurrections trailer is here! Is your pill Red or Blue?
I have Red pill
Welcome..to the real world avimanyu!

Aquí, mejoré un poco la condición if al ocuparme de dos posibilidades probables de distinción entre mayúsculas y minúsculas. Solo Red es la subcadena aquí. Pero red es una entrada posible también. Entonces, agregué otra condición. || indica “o”. Si ingresa Red , es una subcadena. Pero aunque red no es uno, tuve que agregarlo.

Encontrar subcadena en bash usando el comando grep

Aquí hay otra forma de encontrar una subcadena en una cadena en bash. Use el comando grep de esta manera:

if grep -q "$substr" <<< "$fullstring"; then echo "Found"; fi

El q options significa que grep estará en modo silencioso, sin mostrar ningún resultado. Tenga en cuenta que hay 3 <, no solo 2.

Espero que este tutorial rápido lo haya ayudado a buscar una subcadena específica dentro de una cadena. Si tiene preguntas o sugerencias, no dude en dejar un comentario a continuación. Por cierto... ¿Qué pastilla elegiste? ¿Hiciste tu elección?


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

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

  3. Cómo dividir una cadena en Bash Script

  4. ¿Cómo verificar syslog en Bash en Linux?

  5. ¿Cómo verificar si un archivo está vacío 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 una cadena contiene una subcadena en Bash

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

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

¿Cómo puedo verificar los caracteres textuales de una cadena de comando bash?