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

27 feb 2021 2 min di lettura
Cómo comprobar si una cadena contiene una subcadena en Bash
Indice dei contenuti

Introducción

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 verificar si una cadena contiene una subcadena.

Usar caracteres comodín

El enfoque más simple es rodear la subcadena con el asterisco (asterisco) * símbolos comodín 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 verdadero, la subcadena está contenida en la cadena.

En el siguiente ejemplo, estamos usando la instrucción if y el operador de igualdad ( == ) para verificar si la subcadena SUB está dentro de la cadena STR:

#!/bin/bash

 STR='GNU/Linux is an operating system'
 SUB='Linux'
 if [[ "$STR" == *"$SUB"* ]]; then
 echo "Exists!"
 fi

Una vez ejecutado, el script generará:

Exists!

Usando el asistente social

En lugar de usar la instrucción if, también puede usar la instrucción case para verificar si una cadena incluye otra cadena o no.

#!/bin/bash

 STR='GNU/Linux is an operating system'
 SUB='Linux'

 case $STR in

 *"$SUB"*)
 echo -n "Exists!"
 ;;
 esac

Usando el operador Regex

Otra opción para determinar si una subcadena especificada ocurre dentro de una cadena es usar el operador regex = ~. Cuando se utiliza este operador, la cadena correcta se trata como 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 "Exists!"
 fi

El script devolverá el siguiente mensaje:

Exists!

Usando Grep

El comando grep también se puede utilizar para buscar cadenas en otra cadena.

En el siguiente ejemplo, estamos pasando la cadena $ STR como entrada a grep y comprobando si la cadena $ SUB está dentro de la cadena de entrada. El comando devolverá verdadero o falso.

#!/bin/bash

 STR='GNU/Linux is an operating system'
 SUB='Linux'

 if grep -q "$SUB" <<< "$STR"; then
 echo "Exists!"
 fi

La opción -q le dice a grep que omita la salida.

Conclusión

Verificar si una cadena contiene una subcadena es una de las operaciones más básicas y de uso frecuente en los scripts Bash.

Después de leer este tutorial, debe tener una buena comprensión de cómo verificar si una cadena incluye otra cadena. También puede utilizar otros comandos como awk o sed para realizar pruebas.

Support us with a

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.