Contoh String Split String

Bash Split String Examples



Kita perlu membahagikan data rentetan untuk pelbagai tujuan dalam pengaturcaraan. Banyak bahasa pengaturcaraan mempunyai fungsi bawaan bernama 'split' untuk membahagikan sebarang data rentetan menjadi beberapa bahagian. Tetapi tidak ada fungsi built-in dalam bash untuk membahagi rentetan. Biasanya, pembatas tunggal atau berbilang digunakan untuk memisahkan data rentetan. Bagaimana anda dapat membelah rentetan dalam bash ditunjukkan dalam tutorial ini dengan menggunakan contoh yang berbeza.








Menggunakan pemboleh ubah $ IFS

Pemboleh ubah shell khas $ IFS digunakan dalam bash untuk membelah rentetan menjadi perkataan. Pemboleh ubah $ IFS disebut Internal Field Separator (IFS) yang digunakan untuk menetapkan pembatas tertentu untuk membahagi rentetan. Batasan perkataan dikenal pasti dalam huruf kecil oleh $ IFS. Ruang putih adalah nilai pembatas lalai untuk pemboleh ubah ini. Sebarang nilai lain seperti ‘ t’, ‘ n’, ‘-‘ dll. Boleh digunakan sebagai pembatas. Setelah menetapkan nilai ke dalam pemboleh ubah $ IFS, nilai rentetan dapat dibaca oleh dua pilihan. Ini adalah ‘-r’ dan ‘-a’. Pilihan, ‘-r’ digunakan untuk membaca garis miring terbalik () sebagai watak daripada watak melarikan diri dan pilihan ‘-a’ digunakan untuk menyimpan kata-kata terbagi menjadi pemboleh ubah larik. Rentetan dapat dipisahkan tanpa menggunakan pemboleh ubah $ IFS dalam bash. Kaedah yang berbeza untuk memisahkan data rentetan (dengan $ IFS atau tanpa $ IFS) ditunjukkan dalam contoh berikut.



Contoh-1: Rentetan terbelah berdasarkan

Nilai rentetan dibahagi dengan ruang kosong secara lalai. Buat fail bernama ‘split1.sh’ dan tambahkan kod berikut. Di sini, pemboleh ubah teks $ digunakan untuk memberikan nilai rentetan. Pemboleh ubah shell, $ IFS digunakan untuk menetapkan watak yang akan digunakan untuk membahagikan data rentetan. Ruang digunakan dalam skrip ini sebagai pemisah. Pilihan ‘-a’ digunakan dengan perintah membaca untuk menyimpan data split-ted ke dalam pemboleh ubah array yang bernama $ strarr. Gelung ‘for’ digunakan untuk membaca setiap elemen larik, $ strarr.



berpecah1.sh





#! / bin / bash

#Tentukan nilai rentetan
teks='Selamat Datang ke LinuxHint'

# Tetapkan ruang sebagai pembatas
IFS=''

#Baca kata perpecahan menjadi larik berdasarkan pembatas ruang
membaca -kepadastrarr<<< '$ teks'

#Hitung jumlah perkataan
membuang 'Disana ada$ {# strarr [*]}perkataan dalam teks. '

# Cetak setiap nilai array dengan menggunakan gelung
untukjamdalam '$ {strarr [@]}';
buat
printf '$ jam n'
selesai

Pengeluaran:

Jalankan skrip.



$bashberpecah1.sh

Output berikut akan muncul setelah menjalankan skrip.

Contoh-2: Rentetan rentetan berdasarkan watak tertentu

Sebarang watak tertentu boleh digunakan sebagai pemisah untuk membahagi nilai rentetan. Buat fail bernama split2.sh dan tambahkan kod berikut. Di sini, nama buku, nama pengarang dan nilai harga diambil dengan menambahkan koma (,) sebagai rentetan input. Seterusnya, nilai rentetan dipisahkan dan disimpan dalam array berdasarkan nilai pemboleh ubah shell, $ IFS. Setiap nilai elemen array dicetak oleh nilai indeks.

split2.sh

#! / bin / bash

#Baca nilai rentetan
membuang 'Masukkan nama buku, nama pengarang dan harga dengan memisahkan koma. '
membacateks

# Tetapkan koma sebagai pembatas
IFS=','

#Baca kata perpecahan menjadi larik berdasarkan pembatas koma
membaca -kepadastrarr<<< '$ teks'

#Cetak perkataan yang terbelah
membuang Nama Buku:$ {strarr [0]}'
membuang Nama Pengarang:$ {strarr [1]}'
membuang 'Harga:$ {strarr [2]}'

Pengeluaran:

Jalankan skrip.

$bashsplit2.sh

Output berikut akan muncul setelah menjalankan skrip.

Contoh-3: Pisahkan rentetan tanpa pemboleh ubah $ IFS

Contoh ini menunjukkan bagaimana nilai rentetan dapat dibahagikan tanpa menggunakan $ IFS dalam bash. Buat fail bernama ‘ split3.sh ’ dan tambahkan kod berikut. Menurut skrip, nilai teks dengan titik dua (:) harus diambil sebagai input untuk membelah. Di sini, perintah ‘readarray’ dengan pilihan -d digunakan untuk memisahkan data rentetan. Pilihan ‘-d’ digunakan untuk menentukan watak pemisah dalam perintah seperti $ IFS. Seterusnya, gelung ‘for’ digunakan untuk mencetak elemen array.

split3.sh

#! / bin / bash

#Baca rentetan utama
membuang 'Masukkan rentetan dengan titik dua (:) untuk berpisah'
membacamainstr

#Serahkan rentetan berdasarkan pembatas, ':'
pembacaan semula-d:-tstrarr<<< '$ mainstr'
printf ' n'

# Cetak setiap nilai array dengan menggunakan gelung
untuk (( n=0; n< $ {# strarr [*]}; n ++))
buat
membuang '$ {strarr [n]}'
selesai

Pengeluaran:

Jalankan skrip.

$bashsplit3.sh

Output berikut akan muncul setelah menjalankan skrip.

Contoh-4: Pisahkan rentetan dengan pembatas berbilang watak

Nilai rentetan dibahagi oleh pembatas watak tunggal dalam semua contoh sebelumnya. Bagaimana anda boleh membahagikan rentetan dengan menggunakan pembatas berbilang watak ditunjukkan dalam contoh ini. Buat fail bernama Masa berpecah4.sh dan tambahkan kod berikut. Di sini, $ text variabel digunakan untuk menyimpan data rentetan. Pemboleh ubah $ delimiter digunakan untuk menetapkan data pelbagai watak yang digunakan sebagai pembatas dalam pernyataan seterusnya. Pemboleh ubah $ myarray digunakan untuk menyimpan setiap data split-ted sebagai elemen array. Akhirnya, semua data split-ted dicetak dengan menggunakan gelung ‘for’.

split4.sh

#! / bin / bash

#Tentukan rentetan untuk dibahagi
teks='belajarHTMLlearnPHPlearnMySQLlearnJavascript'

#Tentukan pembatas berbilang watak
pembatas='belajar'
#Melengkapkan pembatas dengan tali utama
tali=$ teks$ pembatas

#Susun teks berdasarkan pembatas
myarray=()
sementara [[ tali $ ]];buat
myarray + =( '$ {string %% '$ pembatas' *}' )
tali=$ {string # * '$ pembatas'}
selesai

#Cetak perkataan selepas perpecahan
untuknilaidalam $ {myarray [@]}
buat
membuang -n 'nilai $'
selesai
printf ' n'

Pengeluaran:

Jalankan skrip.

$bashsplit4.sh

Output berikut akan muncul setelah menjalankan skrip.

Kesimpulan:

Data rentetan perlu dipisahkan untuk tujuan pengaturcaraan yang berbeza. Pelbagai cara membelah data rentetan dalam bash ditunjukkan dalam tutorial ini. Harap, setelah mengamalkan contoh-contoh di atas, para pembaca dapat membahagikan data rentetan berdasarkan keperluan mereka.

Untuk maklumat lebih lanjut, tonton video itu !