
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ář.