GNU/Linux >> Linux Esercitazione >  >> Linux

Corrispondenza del modello di script Bash

Bash corrispondenza del modello globale [0-9] può essere utilizzato per abbinare la cifra:

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

In alternativa, puoi utilizzare la corrispondenza del modello regex con =~ :

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

Usa una classe di caratteri:[0-9] corrisponde a 0 , 9 , e ogni carattere tra di loro nel set di caratteri, che - almeno in Unicode (es. UTF-8) e sottoinsiemi di caratteri (es. US-ASCII, Latin-1) - sono le cifre 1 attraverso 8 . Quindi corrisponde a una qualsiasi delle 10 cifre latine.

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

Usando =~ invece di == cambia il tipo di modello da modelli "glob" standard della shell a espressioni regolari ("regex" in breve). Puoi rendere un'espressione regolare equivalente un po' più corta:

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

Il primo accorciamento deriva dal fatto che una regex deve corrispondere solo a qualsiasi parte della stringa, non all'intera cosa. Pertanto non è necessario l'equivalente del * iniziale e finale s che trovi nel modello glob.

La seconda riduzione di lunghezza è dovuta al {n} sintassi, che consente di specificare un numero esatto di ripetizioni del pattern precedente invece di ripetere effettivamente il pattern stesso nella regex. (Puoi anche abbinare qualsiasi intervallo di conteggi di ripetizioni specificando un minimo e un massimo, ad esempio [0-9]{2,4} per abbinare due, tre o quattro cifre di fila.)

Vale la pena notare che potresti anche usare una classe di caratteri con nome per abbinare le cifre. A seconda della tua lingua, [[:digit:]] potrebbe essere esattamente equivalente a [0-9] , oppure può includere caratteri di altri script con la proprietà Unicode "Number, Decimal Digit".

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

Linux
  1. Come eseguire il debug di uno script Bash?

  2. Digitare -a sta dando un errore nello script?

  3. Script Bash per compilare un modello?

  4. Come dividere una stringa nello script Bash

  5. Script Bash - Esempio Hello World

35 Esempi di script Bash

Come eseguire uno script Bash

Esegue lo script bash dall'URL

Funzione Bash per trovare il modello di corrispondenza dei file più recente

basename con spazi in uno script bash?

Esegui il comando bash sulla pipeline jenkins