Shell bertanggung jawab untuk memperluas variabel. Ketika Anda menggunakan tanda kutip tunggal untuk string, isinya akan diperlakukan secara harfiah, jadi sedsekarang cobalah untuk mengganti setiap kemunculan literal $var1dengan ZZ.
Menggunakan tanda kutip ganda
Gunakan tanda kutip ganda untuk membuat shell memperluas variabel sambil mempertahankan spasi putih:
sed -i "s/$var1/ZZ/g" "$file"
Ketika Anda membutuhkan karakter kutipan di string pengganti, Anda harus mengawalinya dengan garis miring terbalik yang akan ditafsirkan oleh shell. Dalam contoh berikut, string quote meakan diganti oleh "quote me"(karakter &ditafsirkan oleh sed):
sed -i "s/quote me/\"&\"/" "$file"
Menggunakan tanda kutip tunggal
Jika Anda memiliki banyak karakter meta shell, pertimbangkan untuk menggunakan tanda kutip tunggal untuk pola, dan tanda kutip ganda untuk variabel:
sed -i 's,'"$pattern"',Say hurrah to &: \0/,' "$file"
Perhatikan bagaimana saya menggunakan s,pattern,replacement,alih-alih s/pattern/replacement/, saya melakukannya untuk menghindari gangguan /pada \0/.
Contoh
Shell kemudian menjalankan perintah di atas seddengan argumen berikutnya (dengan asumsi pattern=bertdan file=text.txt):
-i
s,bert,Say hurrah to &: \0/,
text.txt
Jika file.txtberisi bert, hasilnya akan menjadi:
Say hurrah to bert: \0/