Katakanlah Anda memiliki string panjang dengan beberapa kata yang dipisahkan oleh koma atau garis bawah. Anda ingin memisahkan string ini dan mengekstrak setiap kata.
Anda dapat membagi string di bash menggunakan Pemisah Bidang Internal (IFS) dan membaca perintah atau Anda dapat menggunakan perintah tr. Mari saya tunjukkan cara melakukannya dengan contoh.
Metode 1:Pisahkan string menggunakan perintah baca di Bash
Berikut contoh skrip saya untuk memisahkan string menggunakan perintah baca:
#!/bin/bash
#
# Script to split a string based on the delimiter
my_string="Ubuntu;Linux Mint;Debian;Arch;Fedora"
IFS=';' read -ra my_array <<< "$my_string"
#Print the split string
for i in "${my_array[@]}"
do
echo $i
done
Bagian yang memisahkan string ada di sini:
IFS=';' read -ra my_array <<< "$my_string"
Biarkan saya menjelaskannya kepada Anda. IFS menentukan pembatas di mana Anda ingin membagi string. Dalam kasus saya, ini adalah titik koma. Itu bisa apa saja yang Anda inginkan seperti spasi, tab, koma, atau bahkan huruf.
IFS dalam perintah baca membagi input pada pembatas. Perintah read membaca input mentah (opsi -r) sehingga menginterpretasikan garis miring terbalik secara harfiah alih-alih memperlakukannya sebagai karakter pelarian. Opsi -a dengan perintah read menyimpan kata read ke dalam array di bash.
Dengan kata yang lebih sederhana, string panjang dipecah menjadi beberapa kata yang dipisahkan oleh pembatas dan kata-kata ini disimpan dalam sebuah array.
Sekarang Anda dapat mengakses larik untuk mendapatkan kata apa pun yang Anda inginkan atau gunakan for loop di bash untuk mencetak semua kata satu per satu seperti yang telah saya lakukan pada skrip di atas.
Berikut adalah output dari script di atas:
Ubuntu
Linux Mint
Debian
Arch
Fedora
Metode 2:Pisahkan string menggunakan perintah tr di Bash
Ini adalah contoh string split bash menggunakan perintah tr (translate):
#!/bin/bash
#
# Script to split a string based on the delimiter
my_string="Ubuntu;Linux Mint;Debian;Arch;Fedora"
my_array=($(echo $my_string | tr ";" "\n"))
#Print the split string
for i in "${my_array[@]}"
do
echo $i
done
Contoh ini hampir sama dengan contoh sebelumnya. Alih-alih perintah read, perintah tr digunakan untuk memisahkan string pada pembatas.
Masalah dengan pendekatan ini adalah bahwa elemen array dibagi pada 'pembatas ruang'. Karena itu, elemen seperti 'Linux Mint' akan diperlakukan sebagai dua kata.
Berikut adalah output dari script di atas:
Ubuntu
Linux
Mint
Debian
Arch
Fedora
Itulah alasan mengapa saya lebih memilih metode pertama untuk memisahkan string di bash.
Saya harap tutorial bash cepat ini membantu Anda dalam memisahkan string. Di pos terkait, Anda mungkin juga ingin membaca tentang perbandingan string di bash.
Dan jika Anda benar-benar baru mengenal Bash, baca seri tutorial Bash untuk pemula kami.