如何找到用引号替换字符串?
输入文件:-
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/'