代码之家  ›  专栏  ›  技术社区  ›  Waddah Shamroukh

使用sed将字符串替换为变量

  •  0
  • Waddah Shamroukh  · 技术社区  · 2 年前

    我的文件中有这个字符串

    $vnet_address
    

    我在bash运行时中有一个变量,我想用它来替换字符串:

    $vnet_address=10.1.0.0/16
    

    运行此命令时出现错误:

    sed -i "/\$vnet_address/ s//$vnet_address/"
    

    我相信这是因为变量中的斜杠字符“/”。

    怎么办?

    1 回复  |  直到 2 年前
        1
  •  1
  •   Wiktor Stribiżew    2 年前

    您可以使用

    sed -i "s,\\\$vnet_address,${vnet_address}," file
    

    注:

    • regex分隔符替换为 ,
    • 这个 $ 使用文字正确转义 \ 性格

    看到了吗 online demo :

    #!/bin/bash
    s='$vnet_address'
    vnet_address=10.1.0.0/16
    sed "s,\\\$vnet_address,${vnet_address}," <<< "$s"
    # => 10.1.0.0/16