sed替换具有特殊字符的变量

时间:2018-10-12 12:39:10

标签: bash sed

我知道网上有很多资料,但是我无法用发现的信息解决我的问题,因此就是这个问题。

这是我的bash脚本中的内容:

value=$(cat <<-EOT
{
  "file_path": "/text1/text2/logs/example.log",
  "log_group_name": "/text3/text4/example.log",
  "log_stream_name": "{hostname}"
},

EOT
)

#value='sed sucks'
#echo $value
sed -i "s#app_log_files#${value}#" ex1.json

ex1.json具有这样的代码

"collect_list": [
                  app_log_files
                  {
                    "file_path": "/text5/text6/messages",
                    "log_group_name":"/text7/text8/messages",
                    "log_stream_name":"{hostname}"
                  },

我认为问题在于$ {value}有空格,正斜杠,逗号和引号。我尝试使用其他定界符,但没有用。奇怪的是,即使我的sed中有分隔符,我仍然看到“ sed:-e表达式#1,字符17:未终止的s命令”错误。

sed在这里使用正确吗?关于我要去哪里的任何建议或想法。预先感谢您的帮助。

0 个答案:

没有答案