Contoh String Split Bash

Bash Split String Examples

Kita perlu membagi data string untuk berbagai keperluan dalam pemrograman. Banyak bahasa pemrograman memiliki fungsi bawaan bernama 'split' untuk membagi data string menjadi beberapa bagian. Tetapi tidak ada fungsi bawaan di bash untuk membagi string. Biasanya, pembatas tunggal atau ganda digunakan untuk membagi data string apa pun. Bagaimana Anda dapat membagi string di bash ditunjukkan dalam tutorial ini dengan menggunakan contoh yang berbeda.




Menggunakan variabel $IFS

Variabel shell khusus $IFS digunakan di bash untuk memisahkan string menjadi kata-kata. Variabel $IFS disebut Internal Field Separator (IFS) yang digunakan untuk menetapkan pembatas khusus untuk membagi string. Batas kata diidentifikasi dalam bash oleh $IFS. Ruang putih adalah nilai pembatas default untuk variabel ini. Nilai lain seperti ' ', ' ', '-' dll. Dapat digunakan sebagai pembatas. Setelah menetapkan nilai ke variabel $IFS, nilai string dapat dibaca dengan dua opsi. Ini adalah '-r' dan '-a'. Opsi, '-r' digunakan untuk membaca garis miring terbalik () sebagai karakter daripada karakter pelarian dan opsi '-a' digunakan untuk menyimpan kata-kata terpisah ke dalam variabel array. String dapat dipisah tanpa menggunakan variabel $IFS di bash. Berbagai cara untuk memisahkan data string (dengan $IFS atau tanpa $IFS) ditunjukkan dalam contoh berikut.



Contoh-1: Pisahkan string berdasarkan

Nilai string dibagi dengan spasi secara default. Buat file bernama 'split1.sh' dan tambahkan kode berikut. Di sini, variabel $text digunakan untuk menetapkan nilai string. Variabel shell, $IFS digunakan untuk menetapkan karakter yang akan digunakan untuk membagi data string. Spasi digunakan dalam skrip ini sebagai pemisah. Opsi '-a' digunakan dengan perintah membaca untuk menyimpan data yang dibagi ke dalam variabel array bernama $strarr. 'for' loop digunakan untuk membaca setiap elemen array, $strarr.



split1.sh

#!/bin/bash

#Tentukan nilai string
teks='Selamat datang di LinuxHint'

# Tetapkan ruang sebagai pembatas
IFS=''

#Baca kata-kata yang dibagi menjadi array berdasarkan pembatas ruang
Baca -kestrarr<<< '$teks'

#Hitung total kata
dibuang 'Ada${#strarr[*]}kata-kata dalam teks.'

# Cetak setiap nilai array dengan menggunakan loop
untukjamdi dalam '${strarr[@]}';
melakukan
printf '$ jam '
selesai

Keluaran:

Jalankan skrip.



$pestasplit1.sh

Output berikut akan muncul setelah menjalankan skrip.

Contoh-2: Pisahkan string berdasarkan karakter tertentu

Setiap karakter tertentu dapat digunakan sebagai pemisah untuk membagi nilai string. Buat file bernama split2.sh dan tambahkan kode berikut. Di sini, nama buku, nama penulis, dan nilai harga diambil dengan menambahkan koma (,) sebagai string input. Selanjutnya, nilai string dipisah dan disimpan dalam array berdasarkan nilai variabel shell, $IFS. Setiap nilai elemen array dicetak oleh nilai indeks.

split2.sh

#!/bin/bash

#Baca nilai string
dibuang 'Masukkan nama buku, nama penulis dan harga dengan memisahkan koma. '
Bacateks

# Atur koma sebagai pembatas
IFS=','

#Baca kata-kata split menjadi array berdasarkan pembatas koma
Baca -kestrarr<<< '$teks'

#Cetak kata-kata yang terbelah
dibuang 'Nama Buku:${strarr[0] }'
dibuang 'Nama Penulis:${strarr[1]}'
dibuang 'Harga :${strarr[2]}'

Keluaran:

Jalankan skrip.

$pestasplit2.sh

Output berikut akan muncul setelah menjalankan skrip.

Contoh-3: Pisahkan string tanpa variabel $IFS

Contoh ini menunjukkan bagaimana nilai string dapat dibagi tanpa menggunakan $IFS di bash. Buat file bernama ' split3.sh ' dan tambahkan kode berikut. Menurut skrip, nilai teks dengan titik dua (:) harus mengambil sebagai masukan untuk membelah. Di sini, perintah 'readarray' dengan opsi -d digunakan untuk membagi data string. Opsi '-d' digunakan untuk menentukan karakter pemisah dalam perintah seperti $IFS. Selanjutnya, loop 'for' digunakan untuk mencetak elemen array.

split3.sh

#!/bin/bash

#Baca string utama
dibuang 'Masukkan string dengan titik dua (:) untuk membagi'
Bacautama

#Pisahkan string berdasarkan pembatas, ':'
susunan baca-D:-Tstrarr<<< '$mainstr'
printf ' '

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

Keluaran:

Jalankan skrip.

$pestasplit3.sh

Output berikut akan muncul setelah menjalankan skrip.

Contoh-4: Pisahkan string dengan pembatas multi-karakter

Nilai string dipisahkan oleh pembatas karakter tunggal di semua contoh sebelumnya. Bagaimana Anda dapat membagi string dengan menggunakan pembatas multi-karakter ditunjukkan dalam contoh ini. Buat file bernama Waktu split4.sh dan tambahkan kode berikut. Di sini, variabel $text digunakan untuk menyimpan data string. Variabel $delimiter digunakan untuk menetapkan data multi-karakter yang digunakan sebagai pembatas dalam pernyataan berikutnya. Variabel $myarray digunakan untuk menyimpan setiap data terpisah sebagai elemen array. Akhirnya, semua data split-ted dicetak dengan menggunakan loop 'untuk'.

split4.sh

#!/bin/bash

#Tentukan string yang akan dibagi
teks='belajarHTMLbelajarPHPlearnMySQLbelajarJavascript'

#Tentukan pembatas multi-karakter
pembatas='mempelajari'
#Gabungkan pembatas dengan string utama
rangkaian=$teks$pembatas

#Pisahkan teks berdasarkan pembatas
myarray=()
ketika [[ $string ]];melakukan
myarray+=( '${string%%'$delimiter'*}' )
rangkaian=${string#*'$delimiter'}
selesai

#Cetak kata-kata setelah perpisahan
untuknilaidi dalam ${myarray[@]}
melakukan
dibuang -n '$nilai'
selesai
printf ' '

Keluaran:

Jalankan skrip.

$pestasplit4.sh

Output berikut akan muncul setelah menjalankan skrip.

Kesimpulan:

Data string perlu dipisah untuk tujuan pemrograman yang berbeda. Berbagai cara memisahkan data string di bash ditampilkan dalam tutorial ini. Harapannya, setelah mempraktekkan contoh-contoh di atas, para pembaca akan dapat membagi data string apa pun berdasarkan kebutuhan mereka.

Untuk informasi lebih lanjut tonton videonya !