如何找到用引号替换字符串?
输入文件:-

cat test.conf
DIR='/mnt/'

我想替换变量NEWDIR,变量可以是“/opt”或“/mnt/iso”
注:输入文件中的单引号也应保留。
NEWDIR="/opt/"
sed -i 's/^DIR=.*$/DIR=$NEWDIR/' test.conf

但它似乎并没有取代绳子
cat test.conf
DIR='/mnt/'

最佳答案

尝试:

NEWDIR=/mnt/
sed -i'' "s:^DIR=.*$:DIR='$NEWDIR':g" test.conf

操作代码的更改:
对sed的分隔符使用:以避免在NEWDIR中转义斜杠
使用sed "..."而不是sed '...'来允许参数扩展
用here字符串测试它:
$ NEWDIR=/mnt/
$ sed "s:^DIR=.*$:DIR='$NEWDIR':g" <<< "DIR='/opt/'"
DIR='/mnt/'

10-01 12:59