Android

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

speller

speller

Obsah:

Anonim

Jednou z nejčastějších operací při práci s řetězci v Bash je zjistit, zda řetězec obsahuje jiný řetězec., ukážeme vám několik způsobů, jak zkontrolovat, zda řetězec obsahuje podřetězec.

Používání zástupných znaků

Nejjednodušší přístup je obklopit podřetězec hvězdičkovými zástupnými symboly (hvězdička) * a porovnat jej s řetězcem. Zástupný znak je symbol, který představuje nulu, jeden nebo více znaků.

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

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

#!/bin/bash STR='GNU/Linux is an operating system' SUB='Linux' if]; then echo "It's there." fi

Po spuštění bude výstup skriptu:

It's there.

Pomocí pouzdra operátor

Namísto použití příkazu if můžete také pomocí příkazu case zkontrolovat, 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í Regex Operator

Další možností, jak určit, zda k určitému podřetězci dochází v řetězci, je použít operátor regex =~ . Při použití tohoto operátoru je správný řetězec považován za regulární výraz.

Období, za kterým následuje hvězdička .* Odpovídá nule nebo více výskytům libovolného znaku kromě znaku nového řádku.

#!/bin/bash STR='GNU/Linux is an operating system' SUB='Linux' if]; then echo "It's there." fi

Skript bude odrážet následující:

It's there.

Pomocí 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 grepu a kontrolujeme, zda se řetězec $SUB 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

Volba -q říká grep, aby byl tichý, aby vynechal výstup.

Závěr

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

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

bash terminál