首页 > 解决方案 > 使用 bash 脚本替换子字符串

问题描述

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

db_config 文件中的代码是

dbname=test_1

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

子字符串可以是test_1test1testing或任何随机字符串,但格式为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 中找到解决方案。

提前致谢!

标签: bashparsingunix

解决方案


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

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

推荐阅读