GNU/Linux >> Belajar Linux >  >> Linux

Pencocokan pola skrip Bash

Bash pencocokan pola glob [0-9] dapat digunakan untuk mencocokkan digit:

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

Atau, Anda dapat menggunakan pencocokan pola regex dengan =~ :

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

Gunakan kelas karakter:[0-9] cocok dengan 0 , 9 , dan setiap karakter di antaranya dalam kumpulan karakter, yang - setidaknya dalam Unicode (mis. UTF-8) dan kumpulan karakter subset (mis. US-ASCII, Latin-1) - adalah digit 1 melalui 8 . Jadi cocok dengan salah satu dari 10 digit Latin.

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

Menggunakan =~ bukannya == mengubah jenis pola dari pola "glob" standar Shell menjadi ekspresi reguler ("singkatnya regex"). Anda dapat membuat regex yang setara sedikit lebih pendek:

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

Pemendekan pertama berasal dari fakta bahwa regex hanya harus cocok dengan bagian mana pun dari string, bukan semuanya. Oleh karena itu, Anda tidak memerlukan padanan dari * di depan dan di belakang s yang Anda temukan dalam pola glob.

Pengurangan panjang kedua disebabkan oleh {n} sintaks, yang memungkinkan Anda menentukan jumlah pengulangan yang tepat dari pola sebelumnya alih-alih benar-benar mengulang pola itu sendiri di regex. (Anda juga dapat mencocokkan salah satu rentang jumlah pengulangan dengan menentukan minimum dan maksimum, seperti [0-9]{2,4} untuk mencocokkan dua, tiga, atau empat digit berturut-turut.)

Perlu dicatat bahwa Anda juga bisa menggunakan kelas karakter bernama untuk mencocokkan angka. Bergantung pada lokal Anda, [[:digit:]] mungkin sama persis dengan [0-9] , atau mungkin menyertakan karakter dari skrip lain dengan properti Unicode "Angka, Digit Desimal".

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

Linux
  1. Bisakah Skrip Bash Dihubungkan ke File?

  2. Bagaimana Cara Men-debug Skrip Bash?

  3. Typeset -a Apakah Memberikan Kesalahan Dalam Script?

  1. Script Bash Untuk Mengisi Template?

  2. Cara Memisahkan String dalam Skrip Bash

  3. Jalankan skrip bash sebagai daemon

  1. Skrip Bash - Contoh Halo Dunia

  2. Tambahkan skrip bash ke jalur

  3. Pencocokan pola tidak berfungsi dalam skrip bash