Memisahkan Rentetan pada Pembatas dalam Bash

Bash

Memecahkan Manipulasi Rentetan dalam Bash

Apabila bekerja dengan skrip shell, tugas biasa adalah untuk memisahkan rentetan berdasarkan pembatas. Sebagai contoh, pertimbangkan rentetan yang mengandungi alamat e-mel yang dipisahkan oleh koma bertitik. Jika anda perlu memproses setiap e-mel secara individu, memahami cara memisahkan rentetan ini menjadi penting. Artikel ini akan membimbing anda melalui kaedah yang berbeza untuk mencapai ini dalam Bash.

Kami akan meneroka penyelesaian seperti menggunakan arahan `tr` dan memanipulasi Pemisah Medan Dalaman (IFS). Pada akhirnya, anda akan dapat mengendalikan pemisahan rentetan dengan cekap dan menetapkan semula IFS kepada nilai lalainya. Mari selami dan permudahkan tugas skrip Bash anda!

Perintah Penerangan
tr Menterjemah atau memadam aksara. Digunakan di sini untuk menggantikan koma bertitik dengan aksara baris baharu untuk membelah rentetan.
IFS Pemisah Medan Dalaman, digunakan untuk memisahkan rentetan berdasarkan pembatas tertentu dalam skrip Bash.
read -r -a Membaca baris input dan membahagikannya kepada tatasusunan. Pilihan -r menghalang garis miring ke belakang daripada ditafsirkan sebagai aksara melarikan diri.
echo Mencetak teks ke output standard. Digunakan untuk memaparkan elemen rentetan berpecah.
split Fungsi Perl yang membahagikan rentetan kepada senarai rentetan berdasarkan pembatas yang ditentukan.
foreach Struktur gelung Perl yang berulang pada senarai nilai.

Memahami Teknik Pemisahan Rentetan Bash

Skrip Bash pertama menunjukkan cara memisahkan rentetan menggunakan perintah. Di sini, kami mentakrifkan rentetan dan gunakan sempena tr untuk menterjemahkan pembatas koma bertitik kepada aksara baris baharu. Ini dengan berkesan memecahkan rentetan kepada baris individu. The gelung kemudian berulang pada setiap baris, mencetak alamat dalam kurungan segi empat sama. Kaedah ini adalah mudah dan memanfaatkan keupayaan pemprosesan teks berkuasa perintah Unix untuk memanipulasi rentetan.

Kaedah lain melibatkan pelarasan . Dengan menetapkan sementara kepada koma bertitik, kita boleh membahagikan rentetan kepada tatasusunan. Kami simpan yang asal kepada OIFS sebelum mengubah suainya, memastikan kami boleh memulihkannya kemudian. The arahan membaca rentetan input ke dalam tatasusunan yang dipanggil , membahagikannya berdasarkan yang diubah suai . Selepas diproses, yang asal IFS dipulihkan. Pendekatan ini menyediakan cara yang lebih terprogram untuk mengendalikan pemisahan rentetan dalam Bash, membolehkan kami menggunakan tatasusunan untuk manipulasi selanjutnya.

Menggunakan Bash untuk Memisahkan Rentetan 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 Rentetan dalam 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 Rentetan

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 Rentetan

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 Rentetan Lanjutan dalam Bash

Kaedah lain yang berkuasa untuk membelah rentetan dalam Bash melibatkan penggunaan perintah. ialah utiliti baris arahan serba boleh yang direka untuk pengimbasan dan pemprosesan corak. Ia amat berguna untuk membelah rentetan kerana ia membolehkan kami menentukan pemisah medan tersuai. Sebagai contoh, kita boleh menggunakan untuk membelah rentetan berdasarkan pembatas koma bertitik dan mencetak komponen individu. Kaedah ini sangat fleksibel dan boleh mengendalikan tugas manipulasi rentetan yang lebih kompleks, menjadikannya alat yang berharga dalam kit alat pengaturcara Bash.

Selain itu, arahan boleh digunakan untuk memisahkan rentetan berdasarkan pembatas. The arahan biasanya digunakan untuk mengekstrak bahagian daripada setiap baris data input. Dengan menyatakan pembatas dengan pilihan dan memilih medan dengan -f pilihan, kita boleh memisahkan dan mengekstrak bahagian rentetan dengan cekap. Sebagai contoh, menggunakan akan mengekstrak alamat e-mel pertama daripada rentetan input. Kaedah lanjutan ini memberikan lebih kawalan dan ketepatan untuk tugasan manipulasi rentetan dalam Bash.

  1. Bagaimanakah cara saya membahagikan rentetan pada pembatas dalam Bash?
  2. Anda boleh menggunakan pembolehubah atau arahan seperti , , dan cut untuk membelah rentetan pada pembatas.
  3. Apa itu pembolehubah dalam Bash?
  4. The (Pemisah Medan Dalaman) ialah pembolehubah khas yang mentakrifkan aksara yang digunakan untuk memisahkan teks input kepada perkataan atau token.
  5. Bagaimanakah saya boleh menetapkan semula berubah kepada nilai lalainya?
  6. Simpan yang asal nilai sebelum menukarnya, dan memulihkannya selepas pemprosesan: .
  7. Apa yang arahan lakukan dalam pemisahan rentetan?
  8. The perintah menterjemah atau memadam aksara. Ia boleh menggantikan pembatas dengan baris baharu untuk memisahkan rentetan: .
  9. Bolehkah saya memisahkan rentetan ke dalam tatasusunan menggunakan Bash?
  10. Ya, dengan menukar pembolehubah dan menggunakan , anda boleh memisahkan rentetan kepada tatasusunan:
  11. Apa itu perintah digunakan untuk?
  12. ialah utiliti baris arahan untuk pengimbasan dan pemprosesan corak. Ia boleh memisahkan rentetan dengan menentukan pemisah medan tersuai.
  13. Bagaimana caranya kerja arahan?
  14. The arahan mengekstrak bahagian daripada setiap baris input. Ia boleh memisahkan rentetan dengan menentukan pembatas dan memilih medan: .
  15. Mengapa menggunakan membantu dalam pemisahan rentetan?
  16. menggunakan membolehkan anda menentukan pembatas tersuai untuk membelah rentetan, menjadikannya serba boleh untuk format input yang berbeza.
  17. Adakah mungkin untuk memisahkan rentetan dengan berbilang pembatas dalam Bash?
  18. Ya, anda boleh menggunakan gabungan dan untuk mengendalikan pelbagai pembatas.
  19. Boleh saya guna untuk pemisahan rentetan dalam Bash?
  20. manakala terutamanya editor aliran, ia boleh digabungkan dengan arahan lain seperti untuk membelah rentetan secara tidak langsung.

Menguasai manipulasi rentetan dalam Bash boleh meningkatkan kecekapan skrip anda dengan ketara. Sama ada menggunakan untuk pembatas mudah atau alat yang lebih maju seperti dan , teknik ini penting untuk pengaturcaraan Bash yang berkesan. Ingat untuk sentiasa memulihkan yang asal IFS untuk mengelakkan tingkah laku yang tidak dijangka dalam skrip anda. Dengan kaedah ini, anda boleh mengendalikan pelbagai tugas pemprosesan rentetan dalam skrip Bash anda.