Norman Ramsey の回答に加えて、文字列全体を二重引用符で囲むことができることを追加したいと思います (これにより、ステートメントが読みやすくなり、エラーが発生しにくくなります)。
したがって、「foo」を検索して $BAR の内容に置き換えたい場合は、sed コマンドを二重引用符で囲むことができます。
sed 's/foo/$BAR/g'
sed "s/foo/$BAR/g"
最初の $BAR は正しく展開されませんが、2 番目の $BAR は正しく展開されます。
あなたの 2 つの例は同じように見えるため、問題の診断が難しくなります。潜在的な問題:
<オール>
sed 's/xxx/'"$PWD"'/'
のように二重引用符が必要な場合があります
$PWD
スラッシュが含まれている可能性があります。その場合、文字を検索する必要があります $PWD
に含まれる 区切り文字として使用します。
おそらく、両方の問題を一度に解決するには
sed '[email protected]@'"$PWD"'@'