【问题标题】:expand unix variable inside sed command [duplicate]在 sed 命令中展开 unix 变量
【发布时间】:2019-03-04 04:25:49
【问题描述】:

我需要用分配给变量的新值替换配置文件中的当前值,

喜欢

file_name=abc.txt

需要像更换一样

file_name=xyz.txt

在哪里$file=xyz.txt

我试过了

sed -i 's/file_name=.*/file_name=$file/g'  conf_file.conf

但是变量没有得到扩展, 它就像file_name=$file

任何指针?

【问题讨论】:

  • 我尝试使用上述重复线程,但在我的情况下,它应该搜索“file_name=”,然后替换为“file_name=xyz.txt”
  • 重复项说使用双引号而不是单引号。如果您尝试过,它会起作用。

标签: linux unix sed


【解决方案1】:

这应该可以工作,假设变量file 具有值:xyz.txt 分配给它:

sed "s/file_name=.*/file_name=${file}/g" file_name

输出:

file_name=xyz.txt

【讨论】:

  • 但如果$file 中有空格,这将不起作用。为什么在双引号之外使用${file}?这不是必需的,如果变量包含空格,则会出错。
  • 没错..感谢@JonathanWakely 的建议..我认为它应该适用于我编辑的答案。我已经从${file} 中删除了双引号" "
  • 它不能与.........一起工作 sed "s/$$file_name=.*/$$file_name=${file}/g" file_name
  • 为什么加了$$?这将为您提供当前 shell 的进程 ID,这不是您想要的。您为什么不尝试人们实际建议的方法,而不是尝试其他行不通的方法?
  • 实际上在我的配置文件中,file_name 将是 $$file_name,所以尝试使用它的 informatica 配置文件,其中参数将由 $$parameter_name 给出
猜你喜欢
  • 2013-07-02
  • 2023-03-31
  • 1970-01-01
  • 2012-06-24
  • 2023-01-02
  • 1970-01-01
  • 2016-12-23
  • 2012-12-12
相关资源
最近更新 更多