用于替换文件中的值[重复]

问题描述 投票:0回答:1

我的目标是通过识别变量名称并使用sed来替换某些变量的值。

但是,我没有得到想要的输出,实际上是在附加值而不是被替换。

输入文件内容:

export TENANT_NAME=xxxx
export WONDER_VALUE=xxx_xxx_xxxx_xxxx
export LOAD_BALANCERS=xxxx_xx

Bash脚本:

#!/bin/bash

sed "s/${1}=*/${1}=${2}/" input.env >> input.env

命令:

./replaceValue.sh WONDER_VALUE BOB_ROB_ALICE

我得到的结果:

export TENANT_NAME=xxxx
export WONDER_VALUE=BOB_ROB_ALICExxx_xxx_xxxx_xxxx
export LOAD_BALANCERS=xxxx_xx

我期望的结果:

export TENANT_NAME=xxxx
export WONDER_VALUE=BOB_ROB_ALICE
export LOAD_BALANCERS=xxxx_xx
bash shell sed
1个回答
-1
投票

错误在于regex:与shell不同,单独的*不匹配任何内容。您的意思是.*。在您编写的regex中,=*仅与=的多个匹配项之一匹配;这就解释了为什么其余行直到最后都没有匹配。

如果要使用sed修改文件,请使用-i选项。

尝试:

Bash脚本:

#!/bin/bash

sed -i "s/${1}=.*/${1}=${2}/" input.env
© www.soinside.com 2019 - 2024. All rights reserved.