GNU/Linux >> Znalost Linux >  >> Linux

Porovnávání vzorů skriptů Bash

Bash shoda vzorů globu [0-9] lze použít pro shodu s číslicí:

if [[ $var1 == *,123[0-9][0-9][0-9],* ]] ; then echo "Pattern matched"; fi

Případně můžete použít porovnání vzorů regulárních výrazů s =~ :

if [[ $var1 =~ .*,123[0-9]{3},.* ]] ; then echo "Pattern matched"; fi

Použijte třídu znaků:[0-9] odpovídá 0 , 9 a každý znak mezi nimi ve znakové sadě, což – alespoň v Unicode (např. UTF-8) a podmnožinách znakových sad (např. US-ASCII, Latin-1) – jsou číslice 18 . Takže odpovídá kterékoli z 10 latinských číslic.

if [[ $var1 == *,123[0-9][0-9][0-9],* ]] ; then echo "Pattern matched"; fi

Pomocí =~ místo == změní typ vzoru ze standardních vzorů „glob“ shellu na regulární výrazy (zkráceně „regexes“). Ekvivalentní regulární výraz můžete o něco zkrátit:

if [[ $var1 =~ ,123[0-9]{3}, ]] ; then echo "Pattern matched"; fi

První zkrácení vychází ze skutečnosti, že regulární výraz se musí shodovat pouze s jakoukoli částí řetězce, nikoli s celou věcí. Proto nepotřebujete ekvivalent úvodního a koncového * s, které najdete ve vzoru glob.

Druhé snížení délky je způsobeno {n} syntaxe, která vám umožní zadat přesný počet opakování předchozího vzoru namísto skutečného opakování samotného vzoru v regulárním výrazu. (Můžete také odpovídat libovolnému rozsahu počtu opakování zadáním minima a maxima, například [0-9]{2,4} aby odpovídaly dvěma, třem nebo čtyřem číslicím za sebou.)

Stojí za zmínku, že pro přiřazení číslic můžete použít také pojmenovanou třídu znaků. V závislosti na vašem národním prostředí [[:digit:]] může být přesně ekvivalentní [0-9] , nebo může obsahovat znaky z jiných skriptů s vlastností Unicode "Number, Decimal Digit".

if [[ $var1 =~ ,123[[:digit:]]{3}, ]] ; then echo "Pattern matched"; fi

Linux
  1. Jak ladit Bash skript?

  2. Sazba -a Je zadávání chyby ve skriptu?

  3. Bash skript k vyplnění šablony?

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

  2. Bash Script - příklad Hello World

  3. Spusťte bash skript z adresy URL

  1. Funkce Bash pro nalezení nejnovějšího vzoru pro shodu souborů

  2. alternativy --config java bash skript

  3. Spusťte bash skript jako démona