GNU/Linux >> Belajar Linux >  >> Linux

Mengganti String di Bash

Bash adalah proses perintah yang kompatibel dengan shell UNIX yang tugas utamanya adalah memanipulasi string yang dilakukan di lingkungan shell. Pemrogram kadang-kadang dipanggil untuk mengerjakan file yang berbeda. Mereka dapat menambah, menghapus, dan mengganti bagian atau seluruh file agar sesuai dengan pekerjaan mereka. Ini membutuhkan pengetahuan tentang mengganti string di bash. Penyimpanan data dapat bersifat sementara atau permanen, tergantung pada sifat data tersebut. String file sangat penting saat mengganti konten file.

Mengganti String di Bash

sed sangat penting dan berguna untuk membantu mengganti string dalam file dengan skrip bash. Editor string dapat digunakan dengan berbagai cara untuk mengganti konten file di bash. Editor string alternatif tetapi suara adalah awk yang dapat digunakan saat mengganti nilai string dari file menggunakan bash. Artikel ini akan menunjukkan dengan bantuan contoh bagaimana konten file dapat diganti di bash. Perhatikan bahwa pengetahuan dalam pola regex juga bisa sangat berguna saat mengganti string di bash.

Manipulasi String Bash

Saat melakukan penggantian kecil atau sederhana, sed tidak diperlukan. Bash bisa melakukan manipulasi.

Misalnya:
Saat mengganti fosslinux.gif dengan .mp4, sed tidak diperlukan.
Untuk menjalankan proses menggunakan bash, gunakan teks kode di bawah ini:

#/bin/bash
file_name="fosslinux.gif"
new_extension="mp4"

# Replace .gif with .mp4
generated_file_name=${file_name/.gif/.$new_extension}

echo $generated_file_name

Mengganti String menggunakan sed

sed dapat disebut sebagai editor aliran. Sed dapat mengganti string dalam file. Mari kita lihat contoh file bernama singleboardbytes.txt yang memiliki informasi berikut:
Foss Linux adalah situs pembelajaran yang bagus untuk semua pengguna Linux. Lihat artikel yang diterbitkan oleh Foss Linux di situs mereka.

Sekarang dari file kita, kita perlu mengganti kata “situs ” dengan “situs web ” dan ganti nama file menjadi fosslinux.txt .

Memahami sintaks sed

sed -i 's/search_string/replace_string/' filename
sed – is the command used in the execution of the above syntax
‘-i’ – used in the modification of contents in the original file with a replacement string aid whenever the search value exists in the file.
‘s’ – this is the substitute command
‘search_string’ – this represents the string value that is to be searched for replacement in the original file
‘replace_string’ – this represents the string value that is used to replace the searched value. The string should match the string found by the ‘search_string’ command.
‘filename’ – this is the filename whereby the replacement will be applied.

Jalankan perintah berikut di terminal Anda:

sed 's/site/website/g' singleboardbytes.txt > fosslinux.txt

Catatan:Anda juga dapat menjalankan perintah di atas dengan meletakkannya sebagai skrip bash.
Mengganti menggunakan -i perintah

Setelah menjalankan perintah, langkah selanjutnya adalah mengganti menggunakan -i memerintah. -i adalah representasi untuk "di tempat", artinya file hanya diganti, dan tidak ada pembuatan file tambahan. Menggunakan contoh kami di atas, jalankan perintah berikut:

sed -i 's/site/website/g' singleboardbytes.txt

Dari gambar di bawah, Anda dapat melihat tanda seru yang mengatakan, File “/home/tuts/singleboardbytes.txt berubah pada disk.” ini menunjukkan bahwa perubahan telah berhasil dilakukan.

Gambar di bawah adalah file yang berisi perubahan yang dilakukan pada langkah sebelumnya, baik pada nama file (singleboardbytes.txt menjadi fosslinux.txt) maupun kata site telah diubah menjadi situs web .

Menggunakan variabel sebagai nilai pencarian dan pengganti

Dengan sedikit interpolasi, variabel dapat digunakan untuk melakukan penggantian string. Argumen sed pertama, dalam hal ini, harus menggunakan tanda kutip ganda, bukan tanda kutip tunggal. Misalnya, kode Anda akan mirip dengan kode di bawah ini:

tuts() {
local search=$1
local replace=$2

# Note the double quotes
sed -i "s/${search}/${replace}/g" singleboardbytes.txt
}

sed memiliki dua rasa, yaitu:FreeBSD dan Linux sed . Distro Linux menggunakan sed Linux sementara pengguna OS X menggunakan sed FreeBSD. Rasa ini sangat berbeda, dan karenanya seseorang tidak dapat mentransfer perintah dari satu rasa sed ke yang lain.

Misalnya, saat mengganti isi file menggunakan FreeBSD, pencadangan harus dilakukan menggunakan ekstensi .bak. Atau Anda dapat memulai pencadangan dengan menggunakan pasangan tanda kutip kosong segera setelah notasi -i seperti yang ditunjukkan pada sintaks bash di bawah ini:

tuts() {
local search=$1
local replace=$2

sed -i "" "s/${search}/${replace}/g" singleboardbytes.txt
}

Jika pencadangan tidak dilakukan saat menggunakan FreeBSD seperti yang diilustrasikan pada kode sintaks di atas, Anda akan mengalami kesalahan seperti yang ditunjukkan di bawah ini:

sed: 1: "/Users/user/path/tuts ...": extra characters at the end of h command

Cara mengganti file dan mencocokkan pola digit menggunakan perintah sed

Jika Anda berhasil menjalankan skrip, pencarian untuk semua konten numerik yang ada dalam file akan dilakukan. Kemudian isi akan diganti dengan menambahkan $ sebelum angka.

#!/bin/bash
# Check the command line argument value exists or not
if [ $1 != "" ]; then
# Search all string containing digits and add $
sed -i 's/\b[0-9]\{5\}\b/$&/g' $1
fi

Mengganti string menggunakan perintah awk

Dalam hal ini, kita akan menggunakan perintah awk alih-alih perintah sed untuk mengganti konten file. Perbedaan di antara perintah-perintah ini adalah bahwa perintah sed secara langsung memperbarui file asli, yang tidak demikian dengan perintah awk.

#!/bin/bash
# Check the command line argument value exists or not
if [ $1 != "" ]; then
# Search all string based on date
awk '{sub("02/06/2020","12/06/2020")}1' $1 > temp.txt && mv temp.txt $1
fi

Kesimpulan

Contoh di atas sangat penting untuk kemajuan Anda dalam mempelajari cara mengganti string di Bash. Oleh karena itu, untuk menjadi mahir, Anda harus berlatih secara teratur. Mencari dan mengganti string dalam file mungkin tampak rumit, tetapi Anda akan merasa jauh lebih mudah dikelola jika mengikuti panduan kami dengan benar.

Poin yang perlu diperhatikan adalah bahwa menjalankan perintah terkadang tampak lebih mudah dikelola, tetapi Anda harus berhati-hati untuk tidak membuat kekacauan dari sed. Ketika Anda memasukkan perintah yang salah, Anda akan merusak komputer Anda, menyebabkan Anda lebih banyak masalah seperti kehilangan data. Oleh karena itu, agar aman, selalu salin dan tempel kode seperti apa adanya ke terminal Anda. Ini akan mencegah kesalahan ejaan yang mungkin merusak mesin Anda. Kami harap artikel ini membantu Anda mempelajari cara mengganti string di bash menggunakan artikel ini.


Linux
  1. Bagaimana Cara Mengganti String Dalam File?

  2. Basa'?

  3. Menggunakan Referensi Ke Variabel Bash String Di Sed?

  1. Di Bash, bagaimana cara menambahkan string setelah setiap baris dalam file?

  2. Bagaimana saya bisa menambahkan string ke awal setiap file dalam folder di bash?

  3. linux bash, string case unta untuk dipisahkan dengan tanda hubung

  1. Hapus kemunculan string dalam file teks

  2. Apa yang dilakukan 'bash -c'?

  3. skrip bash menambahkan teks ke baris pertama file