使用bash脚本替换子字符串

时间:2018-08-13 19:21:27

标签: bash parsing unix

我正在尝试使用bash替换db_config文件中字符串的子字符串。

db_config文件中的

代码是

dbname=test_1

我想将“ test_1”替换为“生产”。

子字符串可以是 test_1 test1 testing 或任何随机字符串,但是格式为 dbname =(无论名称)

这需要更改为 dbname = production

我尝试了这两种语法。都不起作用。

sed -i -e 's/dbname=*/dbname="ihs"/g' db_config

sed -i -e 's/dbname=$/dbname="ihs"/g' db_config

我知道如何在python中解析它,但是我似乎无法在bash中找到解决方案。

谢谢!

1 个答案:

答案 0 :(得分:1)

您应该使用捕获组和.*来匹配键名之后的所有内容:

sed -i 's/^[[:blank:]]*\(dbname=\).*/\1production/' db_config
  • ^[[:blank:]]*匹配dbname=之前的可选空白
  • 不需要g标志。