GNU/Linux >> Belajar Linux >  >> Linux

Regex Kasus Unix?

Saya mencoba mencocokkan pola tanggal menggunakan case perintah tetapi tidak berfungsi. Ada yang bisa bantu saya ?

Masukan :01/05/1900 atau 5/6/1900

Pernyataan kasus yang digunakan:

ptn="[0-9]|[0-9][0-9]/[0-9]|[0-9][0-9]/[0-9][0-9]|[0-9][0-9][0-9][0-9]"

case "$dt" in 
    $ptn ) echo "valid pattern" ;;
    *) echo "invalid"
esac

Tetapi pola yang digunakan dalam pernyataan kasus tidak mengevaluasi 2 input tanggal di atas.

Jawaban yang Diterima:

Coba ini. case hanya mengerti gumpalan, jadi penanganan regexp tidak mudah. =~ operator menawarkan beberapa solusi di sini.

#!/bin/bash
INP="01/05/1900"
ptn="^([0-9]|[0-9][0-9])/([0-9]|[0-9][0-9])/([0-9][0-9]|[0-9][0-9][0-9][0-9])$"
if [[ $INP =~ $ptn ]] ; then
    echo valid pattern
else
    echo invalid
fi

Jika Anda ingin mengurangi ukuran regexp, ^[0-9]{1,2}/[0-9]{1,2}/([0-9]{2}|[0-9]{4})$ bekerja dengan baik juga.


Linux
  1. Array Di Unix Bourne Shell?

  2. Temukan Nomor Baris Yang Berisi Pola Menggunakan Pembatas Regex Khusus?

  3. Apakah Mac Os X Unix?

  1. Linux – Apakah Linux Sebuah Unix?

  2. Pola regex untuk mengedit file /etc/sudoers

  3. Apakah Linux itu Unix?

  1. Grep Regex:Panduan Lengkap

  2. Layanan OS Linux / UNIX:autofs

  3. Abaikan huruf besar-kecil di glob() di Linux