bash - 使用 bash 脚本替换子字符串
问题描述
我正在尝试使用 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 中找到解决方案。
提前致谢!
解决方案
您应该使用捕获组并.*
匹配键名之后的所有内容:
sed -i 's/^[[:blank:]]*\(dbname=\).*/\1production/' db_config
^[[:blank:]]*
匹配之前的可选空格dbname=
- 不需要
g
国旗。
推荐阅读
- node.js - 从 .js 文件执行 sequelize-cli
- php - 无法提交表格 - 请检查一下吗?
- pyspark - 调用 df.show() 函数时出现“引发 EOFError”
- javascript - 如何在提交之前更改 FormData?
- javascript - ( panzoom )如何阻止图像平移出视图?
- python - 按日期查找值并将它们相加
- azure - 将 Azure AppInsights `timestamp` 转换为 `datetime`
- laravel - 许多 web/ios/android 应用程序连接到同一个 Laravel Passport 身份验证
- bash - 带有浮点数的 Bash For 循环
- c# - 如何将变量传递给新的 js 文件函数