用SED替换一个变量

发布于 2025-01-31 21:32:12 字数 256 浏览 4 评论 0原文

我的文件中有此字符串

$vnet_address

用:

$vnet_address=10.1.0.0/16

运行此命令时会替换出错误

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

,并且在我的bash运行时间中有这个变量,我想 我的变量。

怎么去做?

I have this string in my file

$vnet_address

And i have in my bash run time this variable which i want to replace my string with:

$vnet_address=10.1.0.0/16

I get an error when i run this command:

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

And i believe it is because of the slash character '/' in my variable.

How to go about it?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

◇流星雨 2025-02-07 21:32:12

您可以使用

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

注意:

  • 将正则定界符字符替换为
  • $通过文字\角色正确逃脱

了“ https://ideone.com/6jarvn” rel =“ nofollow noreferrer”>在线演示:

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

You can use

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

Note:

  • The regex delimiter character is replaced with ,
  • The $ is properly escaped with a literal \ character

See the 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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文