如何查找并用引号替换字符串?

时间:2019-11-12 06:43:55

标签: bash awk sed scripting

如何找到用引号替换字符串?

输入文件:-

cat test.conf
DIR='/mnt/'

我想替换变量NEWDIR,该变量可以是“ / opt”或“ / mnt / iso”

注意:-输入文件中的单引号也应保留。

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

但是它似乎并没有替换字符串

cat test.conf
DIR='/mnt/'

3 个答案:

答案 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)