GNU/Linux >> Belajar Linux >  >> Linux

Kembalikan kecocokan regex dalam skrip Bash, alih-alih menggantinya

echo "TestT100String" | sed 's/[^0-9]*\([0-9]\+\).*/\1/'

echo "TestT100String" | grep -o  '[0-9]\+'

Metode yang Anda gunakan untuk memasukkan hasil ke dalam array agak bergantung pada bagaimana data sebenarnya diambil. Tidak ada cukup informasi dalam pertanyaan Anda untuk dapat memandu Anda dengan baik. Namun, berikut ini salah satu metodenya:

index=0
while read -r line
do
    array[index++]=$(echo "$line" | grep -o  '[0-9]\+')
done < filename

Inilah cara lain:

array=($(grep -o '[0-9]\+' filename))

Anda bisa melakukan ini murni di bash menggunakan tanda kurung siku ganda [[ ]] test operator, yang menyimpan hasil dalam array yang disebut BASH_REMATCH :

[[ "TestT100String" =~ ([0-9]+) ]] && echo "${BASH_REMATCH[1]}"

Linux
  1. Bagaimana Cara Men-debug Skrip Bash?

  2. Baca baris demi baris dalam skrip bash

  3. Mensimulasikan penekanan tombol ENTER dalam skrip bash

  1. Cetak output dari pernyataan cat dalam loop skrip bash

  2. Skrip Bash Shell - Periksa bendera dan ambil nilainya

  3. Cakupan variabel untuk skrip bash shell dan fungsi dalam skrip

  1. Bagaimana cara memeriksa apakah ada file di direktori tertentu dalam skrip bash?

  2. Pencocokan pola tidak berfungsi dalam skrip bash

  3. Periksa apakah ada parameter ke skrip bash yang cocok dengan string