Selain jawaban Norman Ramsey, saya ingin menambahkan bahwa Anda dapat mengutip dua kali seluruh string (yang dapat membuat pernyataan lebih mudah dibaca dan mengurangi rawan kesalahan).
Jadi jika Anda ingin mencari 'foo' dan menggantinya dengan konten $BAR, Anda dapat mengapit perintah sed dengan tanda kutip ganda.
sed 's/foo/$BAR/g'
sed "s/foo/$BAR/g"
Yang pertama, $BAR tidak akan diperluas dengan benar sedangkan yang kedua $BAR akan diperluas dengan benar.
Dua contoh Anda terlihat identik, yang membuat masalah sulit didiagnosis. Potensi masalah:
-
Anda mungkin memerlukan tanda kutip ganda, seperti pada
sed 's/xxx/'"$PWD"'/'
-
$PWD
mungkin berisi garis miring, dalam hal ini Anda perlu menemukan karakter bukan terkandung dalam$PWD
untuk digunakan sebagai pembatas.
Untuk menyelesaikan kedua masalah sekaligus, mungkin
sed '[email protected]@'"$PWD"'@'