如何找到用引号替换字符串?
输入文件:-
cat test.conf
DIR='/mnt/'
我想替换变量NEWDIR,该变量可以是“ / opt”或“ / mnt / iso”
注意:-输入文件中的单引号也应保留。
NEWDIR="/opt/"
sed -i 's/^DIR=.*$/DIR=$NEWDIR/' test.conf
但是它似乎并没有替换字符串
cat test.conf
DIR='/mnt/'
答案 0 :(得分:4)
尝试:
NEWDIR=/mnt/
sed -i'' "s:^DIR=.*$:DIR='$NEWDIR':g" test.conf
更改为OP代码:
:
用于sed的定界符,以避免在NEWDIR
中转义斜线sed "..."
代替sed '...'
来允许参数扩展使用here字符串对其进行测试:
$ NEWDIR=/mnt/
$ sed "s:^DIR=.*$:DIR='$NEWDIR':g" <<< "DIR='/opt/'"
DIR='/mnt/'
答案 1 :(得分:2)
请您尝试以下。
auth_deviceid
如果要将输出保存到Input_file本身,请使用:
var="/opt" ##A shell variable.
awk -v s1="\"" -v value="$var" '{gsub(/\047\/mnt\/\047/,s1 value s1)} 1' Input_file
答案 2 :(得分:0)
使用双引号而不是单引号 你的容貌会像这样
a = '452398'
new = list(a)
for i in range(0,len(new),2):
num = int(new[i]) * 2
if num > 9:
new[i] = num - 9
else:
new[i] = num
a = ''.join(map(str,new))
print(a)