在linux中使用sed命令更改变量值

时间:2018-03-16 08:46:08

标签: linux bash shell sed

我在linux中找到一个sed命令,可以将以下变量值替换为.env文件中的root

DB_USERNAME=123
DB_ABC_USERNAME=abc
DB_ABC_DEF_USERNAME=abcdef

DB_USERNAME=root
DB_ABC_USERNAME=root
DB_ABC_DEF_USERNAME=root

文件中有另一个变量,如DB_HOST = xxx,我们不能使用sed更改所有变量

2 个答案:

答案 0 :(得分:1)

我得到了更好的答案

sed -i '/DB_.*USERNAME/s/=.*/=root/g'  .env

我认为这是一个很好的问题,但为什么不喜欢?

答案 1 :(得分:0)

这个简单的sed会帮助你。

sed 's/=.*/=root/g'  Input_file

如果您想将输出保存到相同的Input_file中,请在上面的代码中使用sed -i选项。

编辑: 如果您想要查找特定的字符串值,只能搜索和替换,那么以下内容可能对您有帮助。

sed -E '/(DB_USERNAME)|(DB_ABC_USERNAME)|(DB_ABC_DEF_USERNAME)/s/=.*/=root/g'  Input_file

EDIT2: 如果您要查找的特定字符串只是要更改,那么以下内容可能对您有帮助。

awk '/DB_USERNAME/||/DB_ABC_USERNAME/||/DB_ABC_DEF_USERNAME/{sub(/=.*/,"=root")} 1'  Input_file

在上面的代码中添加> temp_file && mv temp_file Input_file,以防您想要将输出保存在同一个Input_file中。