代码之家  ›  专栏  ›  技术社区  ›  Harsha Jasti

使用bash脚本[duplicate]替换子字符串

  •  1
  • Harsha Jasti  · 技术社区  · 7 年前

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

    数据库配置文件中的代码是

    dbname=test_1
    

    子字符串可以是 测试1 测试1 或任何随机字符串,但格式为

    这需要改成 dbname=生产

    我试过这两种语法。都没用。

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

    提前谢谢!

    1 回复  |  直到 7 年前
        1
  •  1
  •   anubhava    7 年前

    你应该使用一个捕获组 .* 要匹配keyname之后的所有内容:

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