En plus de la réponse de Norman Ramsey, j'aimerais ajouter que vous pouvez mettre entre guillemets la chaîne entière (ce qui peut rendre la déclaration plus lisible et moins sujette aux erreurs).
Ainsi, si vous souhaitez rechercher "foo" et le remplacer par le contenu de $BAR, vous pouvez placer la commande sed entre guillemets.
sed 's/foo/$BAR/g'
sed "s/foo/$BAR/g"
Dans le premier, $BAR ne se développera pas correctement tandis que dans le second, $BAR se développera correctement.
Vos deux exemples semblent identiques, ce qui rend les problèmes difficiles à diagnostiquer. Problèmes potentiels :
-
Vous aurez peut-être besoin de guillemets doubles, comme dans
sed 's/xxx/'"$PWD"'/'
-
$PWD
peut contenir une barre oblique, auquel cas vous devez rechercher un caractère pas contenu dans$PWD
à utiliser comme délimiteur.
Pour résoudre les deux problèmes à la fois, peut-être
sed '[email protected]@'"$PWD"'@'