【问题标题】:Linux sed command is not working when trying to substitute environment variable [duplicate]尝试替换环境变量时,Linux sed 命令不起作用[重复]
【发布时间】:2019-02-11 18:25:36
【问题描述】:

我有一个环境变量 LIB_HOME=/etc/temp 在其中一个配置文件中,我正在尝试使用 sed 命令替换整行,如下所示

sed -i '/lib.home=/c\lib.home=$LIB_HOME' myconfig.properties

实际输出:lib.home=blablabla ===> lib.home=$LIB_HOME

预期输出:lib.home=blablabla ===> lib.home=/etc/temp

请帮忙

【问题讨论】:

  • 用双引号 " 替换单引号 ' - 你不允许 shell 替换。
  • Kabanus,我尝试了如下命令 == sed -i '/lib.home=/c\lib.home=$LIB_HOME' myconfig.properties == 输出仍然是“lib.home =$LIB_HOME”。请帮助我使用命令

标签: linux sed command environment-variables string-substitution


【解决方案1】:

你试过用双引号吗?

sed -i '/lib.home=/c\lib.home=‘“$LIB_HOME”' myconfig.properties

【讨论】:

  • 是的,维克拉姆。输出是 lib.home="$LIB_HOME"。但预期的输出是 lib.home=/ect/temp
  • 使用 GNU sed:LIB_HOME="/etc/temp"; sed -Ei 's|(lib.home=).*|\1'"$LIB_HOME"'|' myconfig.properties
  • 对我来说它有效,可能是使用移动设备的报价错误# cat > myconfig.properties lib.home= # LIB_HOME="/etc/temp"; sed -i '/lib.home=/c\lib.home='"$LIB_HOME" myconfig.properties # cat myconfig.properties lib.home=/etc/temp# sed --version sed (GNU sed) 4.2.2
  • 谢谢赛勒斯..你的建议对我有用..
  • 感谢 Vikram 的宝贵建议..
猜你喜欢
  • 2011-07-06
  • 2015-03-24
  • 1970-01-01
  • 2018-04-23
  • 1970-01-01
  • 2020-12-04
  • 2023-01-02
  • 2014-09-27
  • 1970-01-01
相关资源
最近更新 更多