我怎么能找到替换的报价string?
输入文件:-
cat test.conf
DIR='/mnt/'
我想替换变量NEWDIR,变量可能是"/opt"或"/mnt/iso"
注: - 在输入文件中也单引号应保持。
NEWDIR="/opt/"
sed -i 's/^DIR=.*$/DIR=$NEWDIR/' test.conf
但它似乎并没有被替换string
cat test.conf
DIR='/mnt/'
分析解答
尝试:
NEWDIR=/mnt/
sed -i'' "s:^DIR=.*$:DIR='$NEWDIR':g" test.conf
切换为OP代码:
- 使用
:
为实现sed的分隔符,以避免NEWDIR
逃脱斜线 - 使用
sed "..."
代替sed '...'
允许参数扩展
用here-string测试:
$ NEWDIR=/mnt/
$ sed "s:^DIR=.*$:DIR='$NEWDIR':g" <<< "DIR='/opt/'"
DIR='/mnt/'