GNU/Linux >> Znalost Linux >  >> Linux

Jak zkontrolovat, zda řetězec obsahuje podřetězec v Bash

Jednou z nejběžnějších operací při práci s řetězci v Bash je určení, zda řetězec obsahuje jiný řetězec.

V tomto článku vám ukážeme několik způsobů, jak zkontrolovat, zda řetězec obsahuje podřetězec.

Použití zástupných znaků #

Nejjednodušší přístup je obklopit podřetězec zástupnými znaky hvězdičkami (hvězdička) * a porovnat to s řetězcem. Zástupný znak je symbol používaný k reprezentaci nuly, jednoho nebo více znaků.

Pokud test vrátí true , podřetězec je obsažen v řetězci.

V níže uvedeném příkladu používáme příkaz if a operátor rovnosti (== ) zkontrolujte, zda je podřetězec SUB se nachází v řetězci STR :

#!/bin/bash

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

Po spuštění skript vypíše:

It's there.

Použití operátoru případu #

Místo použití příkazu if můžete také použít příkaz case ke kontrole, zda řetězec obsahuje jiný řetězec.

#!/bin/bash

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

case $STR in

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

Použití operátoru regulárního výrazu #

Další možností, jak určit, zda se zadaný podřetězec vyskytuje v řetězci, je použití operátoru regulárního výrazu =~ . Při použití tohoto operátoru je pravý řetězec považován za regulární výraz.

Tečka následovaná hvězdičkou .* odpovídá nule nebo více výskytům jakéhokoli znaku kromě znaku nového řádku.

#!/bin/bash

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

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

Skript bude opakovat následující:

It's there.

Použití Grep #

Příkaz grep lze také použít k nalezení řetězců v jiném řetězci.

V následujícím příkladu předáváme řetězec $STR jako vstup do grep a kontrolu, zda je řetězec $SUB se nachází ve vstupním řetězci. Příkaz vrátí true nebo false podle potřeby.

#!/bin/bash

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

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

-q volba říká grepu, aby byl zticha, aby vynechal výstup.

Závěr č.

Kontrola, zda řetězec obsahuje podřetězec, je jednou z nejzákladnějších a často používaných operací ve skriptování Bash.

Po přečtení tohoto návodu byste měli dobře rozumět tomu, jak otestovat, zda řetězec obsahuje jiný řetězec. Můžete také použít další příkazy jako awk nebo sed pro testování.

Pokud máte nějaké dotazy nebo zpětnou vazbu, neváhejte zanechat komentář.


Linux
  1. Jak zkontrolovat, zda Bash může tisknout barvy?

  2. Jak rozdělit řetězec ve skriptu Bash

  3. Jak funguje cat << EOF v bash?

  1. Jak zkontrolovat, zda má Bash zranitelnost Shellshock?

  2. Jak zkontrolovat podřetězec v Shell Script Bash?

  3. Jak zkontrolovat, zda je soubor prázdný v Bash?

  1. Jak číst řetězec jako hexadecimální číslo v Bash?

  2. Zkontrolujte, zda řetězec obsahuje podřetězec v Pythonu

  3. Jak najít délku struny v Bash [Rychlý tip]