GNU/Linux >> Belajar Linux >  >> Linux

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

Di bash shell, ketika Anda menggunakan tanda dolar diikuti dengan nama variabel, shell memperluas variabel dengan nilainya. Fitur shell ini disebut ekspansi parameter.

Tetapi ekspansi parameter memiliki banyak bentuk lain yang memungkinkan Anda untuk memperluas parameter dan memodifikasi nilai atau mengganti nilai lain dalam proses ekspansi. Dalam artikel ini, mari kita tinjau bagaimana menggunakan konsep ekspansi parameter untuk operasi manipulasi string.

Artikel ini adalah bagian dari seri tutorial bash yang sedang berlangsung. Lihat artikel kami sebelumnya tentang ekspansi bash {}.

1. Identifikasi Panjang String di dalam Bash Shell Script

${#string}

Format di atas digunakan untuk mendapatkan panjang variabel bash yang diberikan.

$ cat len.sh
#! /bin/bash

var="Welcome to the geekstuff"

echo ${#var}

$ ./len.sh
24

Untuk memahami lebih lanjut tentang variabel bash, baca 6 Contoh Variabel Global dan Lokal Bash Praktis.

2. Ekstrak Substring dari Variabel di dalam Bash Shell Script

Bash menyediakan cara untuk mengekstrak substring dari string. Contoh berikut menjelaskan cara mengurai n karakter mulai dari posisi tertentu.

${string:position}

Ekstrak substring dari $string di $position

${string:position:length}

Ekstrak $panjang karakter substring dari $string mulai dari $posisi. Dalam contoh di bawah ini, pernyataan gema pertama mengembalikan substring mulai dari posisi ke-15. Pernyataan gema kedua mengembalikan 4 karakter mulai dari posisi ke-15. Panjangnya harus lebih besar dari atau sama dengan nol.

$ cat substr.sh
#! /bin/bash

var="Welcome to the geekstuff"

echo ${var:15}
echo ${var:15:4}

$ ./substr.sh
geekstuff
geek

Juga, lihat artikel kami sebelumnya untuk memahami lebih lanjut tentang parameter khusus $*, $@, $#, $$, $!, $?, $-, $_ bash.

3. Pencocokan Substring Terpendek

Sintaks berikut menghapus kecocokan terpendek dari $substring dari depan $string

${string#substring}

Sintaks berikut menghapus kecocokan terpendek $substring dari belakang $string

${string%substring}

Contoh skrip shell berikut menjelaskan dua konsep pencocokan substring terpendek di atas.

$ cat shortest.sh
#! /bin/bash

filename="bash.string.txt"

echo ${filename#*.}
echo ${filename%.*}

$ ./shortest.sh
After deletion of shortest match from front: string.txt
After deletion of shortest match from back: bash.string

Dalam pernyataan gema pertama, substring '*.' cocok dengan karakter dan titik, dan # strip dari depan string, sehingga menghapus substring "bash." dari variabel yang disebut nama file. Dalam pernyataan gema kedua substring '.*' cocok dengan substring dimulai dengan titik, dan % strip dari belakang string, sehingga menghapus substring '.txt'

4. Pertandingan Substring Terpanjang

Sintaks berikut menghapus kecocokan terpanjang $substring dari depan $string

${string##substring}

Sintaks berikut menghapus kecocokan terpanjang $substring dari belakang $string

${string%%substring}

Contoh skrip shell berikut menjelaskan dua konsep pencocokan substring terpanjang di atas.

$ cat longest.sh
#! /bin/bash

filename="bash.string.txt"

echo "After deletion of longest match from front:" ${filename##*.}
echo "After deletion of longest match from back:" ${filename%%.*}

$ ./longest.sh
After deletion of longest match from front: txt
After deletion of longest match from back: bash

Dalam contoh di atas, ##*. strip paling cocok untuk '*.' yang cocok dengan "bash.string." jadi setelah striping ini, ia mencetak txt yang tersisa. Dan %%.* menghapus kecocokan terpanjang untuk .* dari belakang yang cocok dengan “.string.txt”, setelah striping  ia mengembalikan “bash”.

5. Temukan dan Ganti Nilai String di dalam Bash Shell Script

Hanya ganti pertandingan pertama

${string/pattern/replacement}

Ini cocok dengan pola dalam variabel $string, dan hanya mengganti kecocokan pertama dari pola dengan penggantinya.

$ cat firstmatch.sh
#! /bin/bash

filename="bash.string.txt"

echo "After Replacement:" ${filename/str*./operations.}

$ ./firstmatch.sh
After Replacement: bash.operations.txt

Ganti semua kecocokan

${string//pattern/replacement}

Ini menggantikan semua kecocokan pola dengan penggantian.

$ cat allmatch.sh
#! /bin/bash

filename="Path of the bash is /bin/bash"

echo "After Replacement:" ${filename//bash/sh}

$ ./allmatch.sh
After Replacement: Path of the sh is /bin/sh

Tentang menemukan dan mengganti, lihat artikel kami sebelumnya – contoh pengganti sed dan Vim cari dan ganti.

Ganti awal dan akhir

${string/#pattern/replacement}

Sintaks berikut diganti dengan string pengganti, hanya jika polanya cocok dengan awal $string.

${string/%pattern/replacement}

Sintaks berikut diganti dengan string pengganti, hanya jika polanya cocok di akhir $string yang diberikan.

$ cat posmatch.sh
#! /bin/bash

filename="/root/admin/monitoring/process.sh"

echo "Replaced at the beginning:" ${filename/#\/root/\/tmp}
echo "Replaced at the end": ${filename/%.*/.ksh}

$ ./posmatch.sh
Replaced at the beginning: /tmp/admin/monitoring/process.sh
Replaced at the end: /root/admin/monitoring/process.ksh

Bacaan yang Disarankan

Bash 101 Hacks, oleh Ramesh Natarajan . Saya menghabiskan sebagian besar waktu saya di lingkungan Linux. Jadi, tentu saja saya penggemar berat baris perintah Bash dan skrip shell. 15 tahun yang lalu, ketika saya mengerjakan berbagai rasa *nix, saya biasa menulis banyak kode pada shell C dan shell Korn. Bertahun-tahun kemudian, ketika saya mulai bekerja di Linux sebagai administrator sistem, saya cukup banyak mengotomatisasi setiap tugas yang mungkin menggunakan skrip Bash shell. Berdasarkan pengalaman Bash saya, saya telah menulis eBook Bash 101 Hacks yang berisi 101 contoh praktis pada baris perintah Bash dan skrip shell. Jika Anda berpikir untuk menguasai Bash, bantulah diri Anda sendiri dan bacalah buku ini, yang akan membantu Anda mengendalikan baris perintah Bash dan skrip shell.


Linux
  1. Panduan Bash For Loop dan Contohnya

  2. Menggunakan 'sed' Untuk Menemukan Dan Mengganti?

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

  1. Cara Memeriksa apakah String Berisi Substring di Bash

  2. Contoh Bash For Loop dan While Loop

  3. Menggunakan grep dan sed untuk mencari dan mengganti string

  1. Editor Vi dan Vim:12 Contoh Temukan dan Ganti yang Kuat

  2. temukan teks yang cocok dan ganti baris berikutnya

  3. bash - temukan posisi indeks string dari substring