GNU/Linux >> Belajar Linux >  >> Linux

Bash Scripting – Manipulasi String

Manipulasi string adalah salah satu konsep dasar dalam skrip bash. Dalam pemrograman, string adalah salah satu tipe data yang merupakan urutan karakter yang berurutan. Penting bagi Anda untuk mengetahui cara membuat dan memanipulasi string di bash. Dalam panduan ini, kita akan mempelajari manipulasi string dalam skrip shell Bash dengan contoh sederhana. Anda akan merasa nyaman bekerja dengan string bash di akhir artikel ini.

Penetapan variabel

String dapat ditetapkan ke variabel dan kemudian digunakan dalam skrip untuk diproses lebih lanjut. Misalnya, saya membuat variabel bernama "GREET_USER" dan mencetak string ke terminal.

$ GREET_USER="Hello, Thanks for visiting OSTechnix"
$ echo "$GREET_USER"

Bash tidak memiliki sistem tipe yang kuat jadi jika Anda menetapkan nilai ke variabel, itu akan diperlakukan sebagai tipe string. Anda dapat membuat string dengan tanda kutip tunggal, ganda, atau tanpa tanda kutip.

Ada perbedaan antara tanda kutip tunggal dan tanda kutip ganda di bash. Tanda kutip tunggal mencegah ekspansi variabel dan perintah sementara tanda kutip ganda mendukungnya. Lihatlah contoh di bawah ini.

Saya telah membuat variabel lain bernama "SITE_NAME" dan digunakan dalam "GREET_USER" variabel. Dalam tanda kutip ganda, variabel akan diperluas dan dalam tanda kutip tunggal, variabel tidak akan diperluas.

$ SITE_NAME="OSTechnix"
## DOUBLE QUOTES

$ GREET_USER="Hello, Thanks for visiting ${SITE_NAME}"
$ echo "$GREET_USER"
# SINGLE QUOTES

$ GREET_USER='Hello, Thanks for visiting ${SITE_NAME}'
$ echo "$GREET_USER"

Panjang string

Untuk mencari panjang string Anda dapat menggunakan # simbol. Menemukan panjang string akan berguna dalam beberapa kasus di mana Anda harus menulis beberapa logika berdasarkan jumlah string.

$ echo "${#SITE_NAME}"

Mengonversi string ke Array

Ada banyak cara untuk mengubah tipe data string menjadi tipe array. Cara paling sederhana adalah dengan mengapit string di dalam kurung kurawal.

$ ARR_TYPE=($GREET_USER)
$ echo ${ARR_TYPE[@]}
$ for element in ${ARR_TYPE[@]}; do
  echo $element
done

Metode kedua adalah membagi string dan menyimpannya sebagai array berdasarkan pembatas yang digunakan dalam string. Pada contoh sebelumnya, spasi digunakan sebagai pemisah bidang (IFS) yang merupakan IFS default di bash. Misalnya, jika Anda memiliki string yang dipisahkan koma, Anda dapat mengatur IFS menjadi koma dan membuat array. Untuk detail lebih lanjut tentang IFS, lihat panduan berikut:

  • Bash Scripting – Sementara Dan Sampai Perulangan Dijelaskan Dengan Contoh
$ STR_TO_ARR="column1,column2,column3"
$ IFS=","
$ ARR=(${STR_TO_ARR})
$ for element in ${ARR[@]}; do echo $element; done
$ echo "${ARR[@]}"

Konversi kasus

Bash memiliki dukungan bawaan untuk konversi string case. Anda harus menggunakan beberapa karakter khusus di akhir string untuk konversi huruf besar seperti yang ditunjukkan di bawah ini.

# SPECIAL CHARACTERS

,, ==> Converts an entire string to lowercase
^^ ==> Converts an entire string to Uppercase
~~ ==> Transpose Case
,  ==> Converts first letter alone to lowercase
^  ==> Converts first letter alone to uppercase
# ---- LOWER TO UPPER CASE ----
$ L_TO_U="welcome to ostechnix"
$ echo ${L_TO_U^^}


# ---- UPPER TO LOWER CASE ----
$ U_TO_L="WELCOME TO OSTECHNIX"
$ echo ${L_TO_U,,}


# ---- TRANSPOSE CASE ----
$ TRS_CASE="Welcome To OsTechnix"
$ echo ${TRS_CASE~~}


# ---- FIRST LETTER TO LOWERCASE ----
$ F_TO_L="OSTECHNIX"
$ echo ${F_TO_L,}


# ---- FIRST LETTER TO UPPERCASE ----
$ F_TO_U="ostechnix"
$ echo ${F_TO_U^}

Anda juga dapat menggunakan pencocokan pola regex dan mengonversi kasing untuk kecocokan.

$ L_TO_U="welcome to ostechnix"
$ echo ${L_TO_U^^[toe]}

Penggabungan string

Anda dapat menggabungkan beberapa string dengan menempatkan string satu demi satu. Bergantung pada bagaimana string Anda digabungkan, Anda juga dapat menambahkan karakter tambahan.

$ SITE_NAME="OSTechnix"
$ MESSAGE="Welcome to"
$ echo "${MESSAGE} {SITE_NAME}"

Pemotongan string

Pengirisan string adalah cara mengekstraksi bagian dari string menggunakan posisi indeks. Setiap karakter dalam string diberi nilai Integer yang dapat digunakan untuk mengambil sebagian dari string. Nilai indeks berkisar dari 0 hingga N. Di bawah ini adalah sintaks untuk slicing.

{STRING:START:LENGTH}

START => Starting Index Position
LENGTH => Length of the String from position START

Jika LENGTH tidak ditentukan maka string akan dicetak sampai akhir dari posisi indeks START .

$ SITE_NAME="OSTechnix"
$ echo ${SITE_NAME:2}

Dengan LENGTH yang diberikan, ia akan mencetak substring dari posisi indeks START dan berapa banyak karakter yang akan dicetak.

$ echo ${SITE_NAME:2:2}

Anda juga dapat membalikkan string dengan banyak cara. Cara paling sederhana adalah dengan menggunakan perintah rev. Jika Anda ingin melakukan ini dengan cara bash tanpa menggunakan perintah eksternal apa pun, Anda harus menulis logikanya secara manual.

$ echo ${SITE_NAME} | rev

Cari dan ganti

Ada cara asli untuk mencari dan mengganti karakter dalam string tanpa menggunakan perintah eksternal seperti sed atau awk .

Untuk mengganti kemunculan pertama substring, gunakan sintaks berikut.

{STRING/X/Y}
The first occurrence of X will be replaced by Y.

Lihatlah contoh di bawah ini di mana kemunculan pertama dari kata "linux" diganti dengan LINUX dalam huruf besar.

$ MESSAGE="linux is awesome to work with.
Ubuntu is one of the powerful linux distribution"
$ echo $MESSAGE
$ echo ${MESSAGE/linux/LINUX}

Untuk mengganti semua kemunculan kata, gunakan sintaks berikut.

$ echo ${MESSAGE//linux/LINUX}

Hapus substring

Ada berbagai cara untuk menghapus substring dari string. Utilitas eksternal seperti sed , awk , atau tr dapat digunakan atau ada cara untuk melakukannya dengan cara asli bash.

Dengan cara asli bash, ekspansi parameter digunakan untuk menghapus substring. Anda harus menggunakan % simbol diikuti oleh pola untuk dihapus. Ini akan cocok dengan pola yang terakhir ditemukan dan menghapusnya.

Misalnya, saya ingin menghapus kata-kata yang muncul setelah titik (. ) sintaks berikut harus digunakan. Di sini apa pun yang muncul setelah periode (. ) akan dihapus. Dalam hal ini, pola terakhir yang cocok .com dihapus.

$ SITE_NAME="www.ostechnix.com"
$ echo ${SITE_NAME%.*}

Untuk mencocokkan kemunculan pertama dari pola, gunakan persentase ganda simbol

$ SITE_NAME="www.ostechnix.com"
$ echo ${SITE_NAME%%.*}

Anda juga dapat menggunakan # atau ## simbol yang akan melakukan semacam penghapusan terbalik. Dengan satu # simbol, pola pertama dicocokkan dan semuanya sebelum pola dihapus.

$ SITE_NAME="www.ostechnix.com"
$ echo ${SITE_NAME#*.}

Dengan ## double ganda simbol, pola terakhir dicocokkan dan semuanya sebelum pola dihapus.

$ SITE_NAME="www.ostechnix.com"
$ echo ${SITE_NAME##*.}

Kesimpulan

Pada artikel ini, kita telah melihat cara membuat string di bash dan berbagai cara untuk memanipulasi string. Untuk membiasakan diri dengan manipulasi string bash, luncurkan terminal dan mulai berlatih contoh yang diberikan dalam panduan ini. Jika Anda memiliki umpan balik atau pertanyaan, silakan gunakan bagian komentar di bawah.

Panduan pembuatan skrip Bash:

  • Bash Scripting – Perintah Printf Dijelaskan Dengan Contoh
  • Bash Scripting – Array Terindeks Dijelaskan Dengan Contoh
  • Bash Scripting – Array Asosiatif Dijelaskan Dengan Contoh
  • Skrip Bash – Untuk Pengulangan Dijelaskan Dengan Contoh
  • Pengalihan Bash Dijelaskan Dengan Contoh
  • Bash Scripting – Variabel Dijelaskan Dengan Contoh
  • Bash Scripting – Fungsi Dijelaskan Dengan Contoh
  • Perintah Bash Echo Dijelaskan Dengan Contoh Di Linux
  • Tutorial Bash Heredoc Untuk Pemula

Linux
  1. Skrip bash(I)

  2. Cara Memisahkan String dalam Skrip Bash

  3. Contoh Manipulasi Bash String – Panjang, Substring, Temukan dan Ganti

  1. Bagaimana Membandingkan String di Bash Shell Scripting

  2. Konversikan string teks dalam bash ke array

  3. menggunakan acak untuk menghasilkan string acak di bash

  1. String Gabungan Bash

  2. Cara Memeriksa apakah String Berisi Substring di Bash

  3. Apa yang dilakukan 'bash -c'?