GNU/Linux >> Belajar Linux >  >> Linux

Cara Memisahkan String dalam Skrip Bash

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.


Linux
  1. Bagaimana Cara Men-debug Skrip Bash?

  2. Bash Script - Cara Membaca Input Pengguna

  3. Bagaimana cara kerja cat << EOF di bash?

  1. Cara memasukkan file dalam skrip bash shell

  2. URL yang menyandikan string dalam skrip bash

  3. Bagaimana cara menjalankan skrip bash berulang kali setiap N detik?

  1. Bagaimana Cara Mengatur Parameter Saat Pipa Bash Script Ke Bash?

  2. Bagaimana Memanggil Fungsi Bash Dalam Skrip Bash Di Dalam Awk?

  3. Cara Menemukan Panjang String di Bash [Kiat Singkat]