Zusätzlich zu Norman Ramseys Antwort möchte ich hinzufügen, dass Sie die gesamte Zeichenfolge in doppelte Anführungszeichen setzen können (was die Anweisung möglicherweise besser lesbar und weniger fehleranfällig macht).
Wenn Sie also nach 'foo' suchen und es durch den Inhalt von $BAR ersetzen möchten, können Sie den sed-Befehl in doppelte Anführungszeichen setzen.
sed 's/foo/$BAR/g'
sed "s/foo/$BAR/g"
Im ersten wird $BAR nicht korrekt erweitert, während im zweiten $BAR korrekt erweitert wird.
Ihre beiden Beispiele sehen identisch aus, was die Diagnose von Problemen erschwert. Mögliche Probleme:
-
Möglicherweise benötigen Sie doppelte Anführungszeichen, wie in
sed 's/xxx/'"$PWD"'/'
-
$PWD
kann einen Schrägstrich enthalten, in diesem Fall müssen Sie nicht ein Zeichen finden enthalten in$PWD
als Trennzeichen verwenden.
Um beide Probleme gleichzeitig zu treffen, vielleicht
sed '[email protected]@'"$PWD"'@'