Memisahkan String pada Pembatas di Bash

Memisahkan String pada Pembatas di Bash
Memisahkan String pada Pembatas di Bash

Menghancurkan Manipulasi String di Bash

Saat bekerja dengan skrip shell, tugas umum adalah membagi string berdasarkan pembatas. Misalnya, pertimbangkan string yang berisi alamat email yang dipisahkan dengan titik koma. Jika Anda perlu memproses setiap email satu per satu, memahami cara membagi string ini menjadi penting. Artikel ini akan memandu Anda melalui berbagai metode untuk mencapai hal ini di Bash.

Kita akan mengeksplorasi solusi seperti menggunakan perintah `tr` dan memanipulasi Internal Field Separator (IFS). Pada akhirnya, Anda akan dapat menangani pemisahan string secara efisien dan mengatur ulang IFS ke nilai defaultnya. Mari selami dan sederhanakan tugas skrip Bash Anda!

Memerintah Keterangan
tr Menerjemahkan atau menghapus karakter. Digunakan di sini untuk mengganti titik koma dengan karakter baris baru untuk memisahkan string.
IFS Pemisah Bidang Internal, digunakan untuk membagi string berdasarkan pembatas tertentu dalam skrip Bash.
read -r -a Membaca baris input dan membaginya menjadi sebuah array. Opsi -r mencegah garis miring terbalik diinterpretasikan sebagai karakter escape.
echo Mencetak teks ke output standar. Digunakan untuk menampilkan elemen string terpisah.
split Fungsi Perl yang membagi string menjadi daftar string berdasarkan pembatas yang ditentukan.
foreach Struktur perulangan Perl yang mengulangi daftar nilai.

Memahami Teknik Pemisahan String Bash

Skrip Bash pertama menunjukkan cara membagi string menggunakan tr memerintah. Di sini, kita mendefinisikan sebuah string IN="bla@some.com;john@home.com" dan gunakan echo setara dengan tr untuk menerjemahkan pembatas titik koma menjadi karakter baris baru. Ini secara efektif memecah string menjadi beberapa baris. Itu for loop kemudian mengulangi setiap baris, mencetak alamat dalam tanda kurung siku. Metode ini mudah dan memanfaatkan kemampuan pemrosesan teks yang kuat dari perintah Unix untuk memanipulasi string.

Metode lain melibatkan penyesuaian Internal Field Separator (IFS). Dengan pengaturan sementara IFS menjadi titik koma, kita dapat membagi string menjadi sebuah array. Kami menyimpan yang asli IFS ke OIFS sebelum memodifikasinya, pastikan kami dapat memulihkannya nanti. Itu read -r -a perintah membaca string input ke dalam array yang disebut mails2, membaginya berdasarkan yang dimodifikasi IFS. Setelah diproses, aslinya IFS dipulihkan. Pendekatan ini memberikan cara yang lebih terprogram untuk menangani pemisahan string di Bash, memungkinkan kita memanfaatkan array untuk manipulasi lebih lanjut.

Menggunakan Bash untuk Memisahkan String pada Pembatas

Skrip Bash

#!/usr/bin/env bash
# Input string
IN="bla@some.com;john@home.com"
# Split string using 'tr' and iterate
mails=$(echo $IN | tr ";" "\n")
for addr in $mails; do
  echo "> [$addr]"
done

# Output:
# > [bla@some.com]
# > [john@home.com]

Memisahkan String di Bash Menggunakan IFS

Skrip Bash

#!/usr/bin/env bash
# Input string
IN="bla@some.com;john@home.com"
# Save the original IFS
OIFS=$IFS
# Set IFS to semicolon
IFS=';'
# Split string into an array
read -r -a mails2 <<< "$IN"
# Restore the original IFS
IFS=$OIFS
# Iterate over the array
for x in "${mails2[@]}"; do
  echo "> [$x]"
done

# Output:
# > [bla@some.com]
# > [john@home.com]

Menggunakan Python untuk Pemisahan String

Skrip Python

#!/usr/bin/env python3
# Input string
IN = "bla@some.com;john@home.com"
# Split string by semicolon
mails = IN.split(';')
# Iterate and print each element
for addr in mails:
    print(f"> [{addr}]")

# Output:
# > [bla@some.com]
# > [john@home.com]

Menggunakan Perl untuk Memisahkan String

Skrip Perl

#!/usr/bin/env perl
use strict;
use warnings;
# Input string
my $IN = "bla@some.com;john@home.com";
# Split string by semicolon
my @mails = split(';', $IN);
# Iterate and print each element
foreach my $addr (@mails) {
    print "> [$addr]\n";
}

# Output:
# > [bla@some.com]
# > [john@home.com]

Teknik Pemisahan String Tingkat Lanjut di Bash

Metode ampuh lainnya untuk memisahkan string di Bash melibatkan penggunaan awk memerintah. awk adalah utilitas baris perintah serbaguna yang dirancang untuk pemindaian dan pemrosesan pola. Ini bisa sangat berguna untuk memisahkan string karena memungkinkan kita menentukan pemisah bidang khusus. Misalnya, kita bisa menggunakan awk -F";" '{print $1, $2}' untuk membagi string berdasarkan pembatas titik koma dan mencetak masing-masing komponen. Metode ini sangat fleksibel dan dapat menangani tugas manipulasi string yang lebih kompleks, menjadikannya alat yang berharga dalam perangkat pemrogram Bash.

Selain itu, cut perintah dapat digunakan untuk membagi string berdasarkan pembatas. Itu cut perintah biasanya digunakan untuk mengekstraksi bagian dari setiap baris data masukan. Dengan menentukan pembatas dengan -d pilihan dan memilih bidang dengan -f pilihan, kita dapat membagi dan mengekstrak bagian string secara efisien. Misalnya menggunakan echo $IN | cut -d';' -f1 akan mengekstrak alamat email pertama dari string input. Metode lanjutan ini memberikan lebih banyak kontrol dan presisi untuk tugas manipulasi string di Bash.

Pertanyaan dan Jawaban Umum Tentang Pemisahan String di Bash

  1. Bagaimana cara membagi string pada pembatas di Bash?
  2. Anda dapat menggunakan IFS variabel atau perintah seperti tr, awk, Dan cut untuk membagi string pada pembatas.
  3. Apakah yang IFS variabel di Bash?
  4. Itu IFS (Pemisah Bidang Internal) adalah variabel khusus yang mendefinisikan karakter yang digunakan untuk membagi teks masukan menjadi kata atau token.
  5. Bagaimana cara mengatur ulang IFS variabel ke nilai defaultnya?
  6. Simpan yang asli IFS nilai sebelum mengubahnya, dan memulihkannya setelah diproses: OIFS=$IFS; IFS=';'; ... ; IFS=$OIFS.
  7. Apa artinya tr perintah yang dilakukan dalam pemisahan string?
  8. Itu tr perintah menerjemahkan atau menghapus karakter. Itu dapat menggantikan pembatas dengan baris baru untuk memisahkan string: echo $IN | tr ";" "\n".
  9. Bisakah saya membagi string menjadi array menggunakan Bash?
  10. Ya, dengan mengubah IFS variabel dan menggunakan read -r -a, Anda dapat membagi string menjadi array: read -r -a array <<< "$string".
  11. Apakah yang awk perintah digunakan untuk?
  12. awk adalah utilitas baris perintah untuk pemindaian dan pemrosesan pola. Itu dapat membagi string dengan menentukan pemisah bidang khusus.
  13. Bagaimana cut perintah bekerja?
  14. Itu cut perintah mengekstrak bagian dari setiap baris input. Itu dapat membagi string dengan menentukan pembatas dan memilih bidang: echo $string | cut -d';' -f1.
  15. Mengapa menggunakan IFS membantu dalam pemisahan string?
  16. Menggunakan IFS memungkinkan Anda menentukan pembatas khusus untuk memisahkan string, menjadikannya serbaguna untuk berbagai format masukan.
  17. Apakah mungkin untuk membagi string dengan beberapa pembatas di Bash?
  18. Ya, Anda dapat menggunakan kombinasi dari tr Dan awk untuk menangani banyak pembatas.
  19. Dapatkah saya menggunakan sed untuk pemisahan string di Bash?
  20. Ketika sed pada dasarnya adalah editor aliran, dapat dikombinasikan dengan perintah lain seperti awk untuk membagi string secara tidak langsung.

Pemikiran Terakhir tentang Pemisahan String di Bash

Menguasai manipulasi string di Bash dapat meningkatkan efisiensi skrip Anda secara signifikan. Apakah menggunakan IFS untuk pembatas sederhana atau alat yang lebih canggih sejenisnya tr Dan awk, teknik ini penting untuk pemrograman Bash yang efektif. Ingatlah untuk selalu mengembalikan yang asli IFS untuk menghindari perilaku tak terduga dalam skrip Anda. Dengan metode ini, Anda dapat menangani berbagai tugas pemrosesan string di skrip Bash Anda.