GNU/Linux >> Linux Esercitazione >  >> Linux

Come verificare se una stringa contiene una sottostringa in Bash

Una delle operazioni più comuni quando si lavora con le stringhe in Bash è determinare se una stringa contiene o meno un'altra stringa.

In questo articolo, ti mostreremo diversi modi per verificare se una stringa contiene una sottostringa.

Utilizzo dei caratteri jolly #

L'approccio più semplice è circondare la sottostringa con simboli jolly asterisco (asterisco) * e confrontalo con la stringa. Il jolly è un simbolo utilizzato per rappresentare zero, uno o più caratteri.

Se il test restituisce true , la sottostringa è contenuta nella stringa.

Nell'esempio seguente stiamo usando l'istruzione if e l'operatore di uguaglianza (== ) per verificare se la sottostringa SUB si trova all'interno della stringa STR :

#!/bin/bash

STR='GNU/Linux is an operating system'
SUB='Linux'
if [[ "$STR" == *"$SUB"* ]]; then
  echo "It's there."
fi

Una volta eseguito, lo script produrrà:

It's there.

Utilizzo dell'operatore caso #

Invece di usare l'istruzione if puoi anche usare l'istruzione case per verificare se una stringa include o meno un'altra stringa.

#!/bin/bash

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

case $STR in

  *"$SUB"*)
    echo -n "It's there."
    ;;
esac

Utilizzo dell'operatore Regex #

Un'altra opzione per determinare se una sottostringa specifica si verifica all'interno di una stringa consiste nell'usare l'operatore regex =~ . Quando viene utilizzato questo operatore, la stringa corretta viene considerata un'espressione regolare.

Il punto seguito da un asterisco .* corrisponde a zero o più occorrenze qualsiasi carattere tranne un carattere di nuova riga.

#!/bin/bash

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

if [[ "$STR" =~ .*"$SUB".* ]]; then
  echo "It's there."
fi

Lo script farà eco a quanto segue:

It's there.

Utilizzo di Grep #

Il comando grep può essere utilizzato anche per trovare stringhe in un'altra stringa.

Nell'esempio seguente, stiamo passando la stringa $STR come input per grep e controllando se la stringa $SUB si trova all'interno della stringa di input. Il comando restituirà true o false a seconda dei casi.

#!/bin/bash

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

if grep -q "$SUB" <<< "$STR"; then
  echo "It's there"
fi

Il -q opzione dice a grep di essere silenzioso, di omettere l'output.

Conclusione #

Controllare se una stringa contiene una sottostringa è una delle operazioni più basilari e utilizzate di frequente negli script Bash.

Dopo aver letto questo tutorial, dovresti avere una buona comprensione di come verificare se una stringa include un'altra stringa. Puoi anche usare altri comandi come awk o sed per il test.

Se hai domande o feedback, sentiti libero di lasciare un commento.


Linux
  1. Come controllare la sottostringa in Shell Script Bash?

  2. Come leggere la stringa come numero esadecimale in Bash?

  3. Come trovare la lunghezza della corda in Bash [Suggerimento rapido]

  4. Come funziona cat << EOF in bash?

  5. Come verificare se una stringa contiene un carattere speciale ([email protected]#$%^&*()_+)

Come verificare se esiste un file o una directory in Bash

Come verificare se un file o una directory esiste in Bash

Come verificare se esiste un file o una directory in Bash Shell

Controlla se String contiene una sottostringa in Python

Come verificare se la stringa contiene una sottostringa in Bash

Come posso controllare la sintassi di uno script Bash senza eseguirlo?